From a5fb52baa3fd4b5c5925f841f8dfa302a9a30836 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Thu, 29 Dec 2016 10:52:27 -0800 Subject: [PATCH] Bug 509769 - ASTInternal.getDefinitionOfBinding() called for binding of type ... errors in the log Have CPPAliasTemplate and CPPAliasTemplateInstance implement ICPPInternalBinding. Change-Id: Ibffe6d1baa29dcfe6566de42ec51a3274b893957 --- .../core/dom/parser/cpp/CPPAliasTemplate.java | 34 +++++++++++++--- .../parser/cpp/CPPAliasTemplateInstance.java | 40 +++++++++++++++---- 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplate.java index 9ed449726bc..5f098d4fbe4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplate.java @@ -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.DOMException; 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.IScope; 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; public class CPPAliasTemplate extends PlatformObject - implements ICPPAliasTemplate, ICPPTemplateParameterOwner { + implements ICPPAliasTemplate, ICPPTemplateParameterOwner, ICPPInternalBinding { private final IASTName aliasName; private final IType aliasedType; private ICPPTemplateParameter[] templateParameters; @@ -126,11 +127,6 @@ public class CPPAliasTemplate extends PlatformObject return templateParameters; } - @Override - public String toString() { - return ASTTypeUtil.getQualifiedName(this) + " -> " + ASTTypeUtil.getType(aliasedType, true); //$NON-NLS-1$ - } - @Override public IBinding resolveTemplateParameter(ICPPTemplateParameter templateParameter) { int pos= templateParameter.getParameterPosition(); @@ -142,4 +138,30 @@ public class CPPAliasTemplate extends PlatformObject } 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$ + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplateInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplateInstance.java index 0be260c7e6f..74669f24076 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplateInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPAliasTemplateInstance.java @@ -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.ast.ASTTypeUtil; 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.IScope; 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.ICPPAliasTemplateInstance; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.dom.Linkage; 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; public class CPPAliasTemplateInstance extends PlatformObject - implements ICPPAliasTemplateInstance, ITypeContainer { + implements ICPPAliasTemplateInstance, ITypeContainer, ICPPInternalBinding { private final char[] name; private final ICPPAliasTemplate aliasTemplate; private IType aliasedType; @@ -107,11 +107,6 @@ public class CPPAliasTemplateInstance extends PlatformObject return null; } - @Override - public String toString() { - return ASTTypeUtil.getQualifiedName(this) + " -> " + ASTTypeUtil.getType(aliasedType, true); //$NON-NLS-1$ - } - @Override public String[] getQualifiedName() { return CPPVisitor.getQualifiedName(this); @@ -124,6 +119,35 @@ public class CPPAliasTemplateInstance extends PlatformObject @Override 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$ } }