1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 09:46:02 +02:00

Bug 509769 - ASTInternal.getDefinitionOfBinding() called for binding of

type ... errors in the log

Have CPPAliasTemplate and CPPAliasTemplateInstance implement
ICPPInternalBinding.

Change-Id: Ibffe6d1baa29dcfe6566de42ec51a3274b893957
This commit is contained in:
Sergey Prigogin 2016-12-29 10:52:27 -08:00
parent 216bc162a4
commit a5fb52baa3
2 changed files with 60 additions and 14 deletions

View file

@ -16,6 +16,7 @@ import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IType;
@ -30,7 +31,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
import org.eclipse.core.runtime.PlatformObject; import org.eclipse.core.runtime.PlatformObject;
public class CPPAliasTemplate extends PlatformObject public class CPPAliasTemplate extends PlatformObject
implements ICPPAliasTemplate, ICPPTemplateParameterOwner { implements ICPPAliasTemplate, ICPPTemplateParameterOwner, ICPPInternalBinding {
private final IASTName aliasName; private final IASTName aliasName;
private final IType aliasedType; private final IType aliasedType;
private ICPPTemplateParameter[] templateParameters; private ICPPTemplateParameter[] templateParameters;
@ -126,11 +127,6 @@ public class CPPAliasTemplate extends PlatformObject
return templateParameters; return templateParameters;
} }
@Override
public String toString() {
return ASTTypeUtil.getQualifiedName(this) + " -> " + ASTTypeUtil.getType(aliasedType, true); //$NON-NLS-1$
}
@Override @Override
public IBinding resolveTemplateParameter(ICPPTemplateParameter templateParameter) { public IBinding resolveTemplateParameter(ICPPTemplateParameter templateParameter) {
int pos= templateParameter.getParameterPosition(); int pos= templateParameter.getParameterPosition();
@ -142,4 +138,30 @@ public class CPPAliasTemplate extends PlatformObject
} }
return templateParameter; return templateParameter;
} }
@Override
public IASTNode getDefinition() {
return aliasName;
}
@Override
public IASTNode[] getDeclarations() {
return null;
}
@Override
public void addDefinition(IASTNode node) {
throw new UnsupportedOperationException();
}
@Override
public void addDeclaration(IASTNode node) {
throw new UnsupportedOperationException();
}
/** For debugging only. */
@Override
public String toString() {
return ASTTypeUtil.getQualifiedName(this) + " -> " + ASTTypeUtil.getType(aliasedType, true); //$NON-NLS-1$
}
} }

View file

@ -15,12 +15,12 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp;
import org.eclipse.cdt.core.dom.ILinkage; import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPAliasTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPAliasTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPAliasTemplateInstance; import org.eclipse.cdt.core.dom.ast.cpp.ICPPAliasTemplateInstance;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.dom.Linkage;
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
@ -28,7 +28,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
import org.eclipse.core.runtime.PlatformObject; import org.eclipse.core.runtime.PlatformObject;
public class CPPAliasTemplateInstance extends PlatformObject public class CPPAliasTemplateInstance extends PlatformObject
implements ICPPAliasTemplateInstance, ITypeContainer { implements ICPPAliasTemplateInstance, ITypeContainer, ICPPInternalBinding {
private final char[] name; private final char[] name;
private final ICPPAliasTemplate aliasTemplate; private final ICPPAliasTemplate aliasTemplate;
private IType aliasedType; private IType aliasedType;
@ -107,11 +107,6 @@ public class CPPAliasTemplateInstance extends PlatformObject
return null; return null;
} }
@Override
public String toString() {
return ASTTypeUtil.getQualifiedName(this) + " -> " + ASTTypeUtil.getType(aliasedType, true); //$NON-NLS-1$
}
@Override @Override
public String[] getQualifiedName() { public String[] getQualifiedName() {
return CPPVisitor.getQualifiedName(this); return CPPVisitor.getQualifiedName(this);
@ -124,6 +119,35 @@ public class CPPAliasTemplateInstance extends PlatformObject
@Override @Override
public boolean isGloballyQualified() throws DOMException { public boolean isGloballyQualified() throws DOMException {
return ((ICPPBinding) aliasTemplate).isGloballyQualified(); return aliasTemplate.isGloballyQualified();
}
@Override
public IASTNode getDefinition() {
if (aliasTemplate instanceof ICPPInternalBinding) {
return ((ICPPInternalBinding) aliasTemplate).getDefinition();
}
return null;
}
@Override
public IASTNode[] getDeclarations() {
return null;
}
@Override
public void addDefinition(IASTNode node) {
throw new UnsupportedOperationException();
}
@Override
public void addDeclaration(IASTNode node) {
throw new UnsupportedOperationException();
}
/** For debugging only. */
@Override
public String toString() {
return ASTTypeUtil.getQualifiedName(this) + " -> " + ASTTypeUtil.getType(aliasedType, true); //$NON-NLS-1$
} }
} }