From 829a826ec904392db3205b127b11ae6e2a9f8b8c Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Tue, 13 May 2008 12:01:16 +0000 Subject: [PATCH] Fixes CCE by removing need for ICPPTemplateDefinition.getTemplateScope(), bug 231744. --- .../dom/ast/cpp/ICPPTemplateDefinition.java | 6 ------ .../cpp/CPPClassTemplateSpecialization.java | 17 ----------------- .../parser/cpp/CPPDeferredClassInstance.java | 11 +++++++++-- .../dom/parser/cpp/CPPFunctionTemplate.java | 4 ---- .../CPPFunctionTemplateSpecialization.java | 19 ------------------- .../dom/parser/cpp/CPPTemplateDefinition.java | 14 -------------- .../cpp/CPPTemplateTemplateParameter.java | 8 +------- .../parser/cpp/CPPTemplateTypeParameter.java | 3 +-- .../dom/parser/cpp/CPPUnknownBinding.java | 19 +++++++------------ .../core/dom/parser/cpp/CPPUnknownClass.java | 2 +- .../dom/parser/cpp/ICPPUnknownBinding.java | 6 ++++-- .../parser/cpp/semantics/CPPTemplates.java | 11 +++++------ .../cpp/CompositeCPPClassTemplate.java | 5 ----- ...mpositeCPPClassTemplateSpecialization.java | 5 ----- .../CompositeCPPDeferredClassInstance.java | 6 ++---- .../cpp/CompositeCPPFunctionTemplate.java | 5 ----- ...siteCPPFunctionTemplateSpecialization.java | 5 ----- .../cpp/CompositeCPPUnknownClassType.java | 5 ++--- .../pdom/dom/cpp/PDOMCPPClassTemplate.java | 6 +----- .../PDOMCPPClassTemplateSpecialization.java | 8 -------- .../dom/cpp/PDOMCPPDeferredClassInstance.java | 9 ++------- .../pdom/dom/cpp/PDOMCPPFunctionTemplate.java | 4 ---- ...PDOMCPPFunctionTemplateSpecialization.java | 5 ----- .../cpp/PDOMCPPTemplateNonTypeParameter.java | 2 +- .../dom/cpp/PDOMCPPTemplateTypeParameter.java | 2 +- .../pdom/dom/cpp/PDOMCPPUnknownClassType.java | 5 ++--- 26 files changed, 39 insertions(+), 153 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateDefinition.java index 13ce8ab0f66..0a0a468d4b7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateDefinition.java @@ -25,10 +25,4 @@ public interface ICPPTemplateDefinition extends ICPPBinding { * @return array of ICPPTemplateParameter */ public ICPPTemplateParameter[] getTemplateParameters() throws DOMException; - - /** - * Returns the scope defined by this template definition. - * @since 5.0 - */ - public ICPPTemplateScope getTemplateScope() throws DOMException; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplateSpecialization.java index 47540911ec2..842ca86c585 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplateSpecialization.java @@ -13,10 +13,8 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp; 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.IProblemBinding; -import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; @@ -24,10 +22,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; -import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.core.parser.util.ObjectMap; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateDefinition.CPPTemplateProblem; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; /** @@ -131,16 +126,4 @@ public class CPPClassTemplateSpecialization extends CPPClassSpecialization public String toString() { return getName(); } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - IScope scope= getCompositeScope().getParent(); - if (scope instanceof ICPPTemplateScope) { - return (ICPPTemplateScope) scope; - } - IASTNode def= getDefinition(); - if (def == null) { - def= getDeclarations()[0]; - } - throw new DOMException(new CPPTemplateProblem(def, IProblemBinding.SEMANTIC_BAD_SCOPE, CharArrayUtils.EMPTY)); - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java index e6201e477fc..4cf089e94d9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredClassInstance.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; 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.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredTemplateInstance; @@ -33,12 +34,13 @@ public class CPPDeferredClassInstance extends CPPUnknownClass implements ICPPDef private IType[] fArguments; private ObjectMap fArgmap; -// private ICPPScope fUnknownScope; + private ICPPClassTemplate fClassTemplate; public CPPDeferredClassInstance(ICPPClassTemplate orig, ObjectMap argMap, IType[] arguments) { super(orig); fArgmap= argMap; fArguments= arguments; + fClassTemplate= orig; } private ICPPClassTemplate getClassTemplate() { @@ -81,7 +83,7 @@ public class CPPDeferredClassInstance extends CPPUnknownClass implements ICPPDef } public ICPPTemplateDefinition getTemplateDefinition() { - return (ICPPTemplateDefinition) scopeBinding; + return fClassTemplate; } public ObjectMap getArgumentMap() { @@ -108,4 +110,9 @@ public class CPPDeferredClassInstance extends CPPUnknownClass implements ICPPDef public IBinding getSpecializedBinding() { return getTemplateDefinition(); } + + @Override + public IScope getScope() throws DOMException { + return fClassTemplate.getScope(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java index 9b7505a5799..9bde0bc43f3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java @@ -33,7 +33,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; @@ -94,9 +93,6 @@ public class CPPFunctionTemplate extends CPPTemplateDefinition implements ICPPFu public boolean takesVarArgs() throws DOMException { throw new DOMException( this ); } - public ICPPTemplateScope getTemplateScope() throws DOMException { - throw new DOMException( this ); - } } protected IFunctionType type = null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java index 1538d064baf..406e771af5a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplateSpecialization.java @@ -12,19 +12,13 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp; 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.IProblemBinding; -import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; -import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.core.parser.util.ObjectMap; -import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateDefinition.CPPTemplateProblem; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; /** @@ -83,17 +77,4 @@ public class CPPFunctionTemplateSpecialization extends CPPFunctionSpecialization public ICPPSpecialization deferredInstance(ObjectMap argMap, IType[] arguments) { return null; } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - IScope scope= getFunctionScope().getParent(); - if (scope instanceof ICPPTemplateScope) { - return (ICPPTemplateScope) scope; - } - IASTNode def= getDefinition(); - if (def == null) { - def= getDeclarations()[0]; - } - throw new DOMException(new CPPTemplateProblem(def, IProblemBinding.SEMANTIC_BAD_SCOPE, CharArrayUtils.EMPTY)); - } - } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateDefinition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateDefinition.java index cf259a9d39f..22fe81540a0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateDefinition.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateDefinition.java @@ -38,9 +38,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ArrayUtil; -import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; @@ -72,9 +70,6 @@ public abstract class CPPTemplateDefinition extends PlatformObject implements IC public boolean isGloballyQualified() throws DOMException { throw new DOMException(this); } - public ICPPTemplateScope getTemplateScope() throws DOMException { - throw new DOMException(this); - } } //private IASTName templateName; @@ -239,15 +234,6 @@ public abstract class CPPTemplateDefinition extends PlatformObject implements IC return definition != null ? definition : declarations[0]; } - public ICPPTemplateScope getTemplateScope() throws DOMException { - final IASTName name = getTemplateName(); - ICPPASTTemplateDeclaration template = CPPTemplates.getTemplateDeclaration(name); - if (template != null) { - return template.getScope(); - } - throw new DOMException(new CPPTemplateProblem(name, IProblemBinding.SEMANTIC_BAD_SCOPE, CharArrayUtils.EMPTY)); - } - /* (non-Javadoc) * @see org.eclipse.cdt.core.dom.ast.IBinding#getName() */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java index cb28baa7584..c482719add2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java @@ -24,7 +24,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; @@ -33,7 +32,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTemplateParameter; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.ObjectMap; @@ -231,10 +229,6 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter implement return ICPPClassType.EMPTY_CLASS_ARRAY; } - public ICPPTemplateScope getTemplateScope() throws DOMException { - return null; - } - public IBinding resolvePartially(ICPPUnknownBinding parentBinding, ObjectMap argMap, ICPPScope instantiationScope) { return null; } @@ -243,7 +237,7 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter implement return null; } - public ICPPBinding getContainerBinding() { + public ICPPUnknownBinding getUnknownContainerBinding() { return null; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java index 7b18accd985..980db699acf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java @@ -18,7 +18,6 @@ import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTypeParameter; import org.eclipse.cdt.core.parser.util.ObjectMap; @@ -76,7 +75,7 @@ public class CPPTemplateTypeParameter extends CPPTemplateParameter implements return null; } - public ICPPBinding getContainerBinding() { + public ICPPUnknownBinding getUnknownContainerBinding() { return null; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownBinding.java index c52d795aa46..5e1b327844e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownBinding.java @@ -17,7 +17,6 @@ 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.IScope; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.internal.core.dom.Linkage; @@ -30,18 +29,17 @@ import org.eclipse.core.runtime.PlatformObject; public abstract class CPPUnknownBinding extends PlatformObject implements ICPPUnknownBinding, ICPPInternalBinding, Cloneable { private ICPPScope unknownScope; - protected ICPPBinding scopeBinding; + protected ICPPUnknownBinding unknownContainerBinding; protected IASTName name; public CPPUnknownBinding(ICPPUnknownBinding scopeBinding, IASTName name) { super(); this.name = name; - this.scopeBinding = scopeBinding; + this.unknownContainerBinding = scopeBinding; } public CPPUnknownBinding(ICPPTemplateDefinition templateDef) { this.name= new CPPASTName(templateDef.getNameCharArray()); - this.scopeBinding= templateDef; } public IASTNode[] getDeclarations() { @@ -82,12 +80,9 @@ public abstract class CPPUnknownBinding extends PlatformObject } public IScope getScope() throws DOMException { - if (scopeBinding instanceof ICPPUnknownBinding) { - return ((ICPPUnknownBinding) scopeBinding).getUnknownScope(); - } else if (scopeBinding instanceof ICPPTemplateDefinition) { - return ((ICPPTemplateDefinition) scopeBinding).getTemplateScope(); - } - assert false; + if (unknownContainerBinding != null) { + return unknownContainerBinding.getUnknownScope(); + } return null; } @@ -120,7 +115,7 @@ public abstract class CPPUnknownBinding extends PlatformObject return name; } - public ICPPBinding getContainerBinding() { - return scopeBinding; + public ICPPUnknownBinding getUnknownContainerBinding() { + return unknownContainerBinding; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownClass.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownClass.java index 5e321866949..0feb3c9a2a9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownClass.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPUnknownClass.java @@ -96,7 +96,7 @@ public class CPPUnknownClass extends CPPUnknownBinding implements ICPPUnknownCla } public IBinding resolvePartially(ICPPUnknownBinding parentBinding, ObjectMap argMap, ICPPScope instantiationScope) { - if (parentBinding == this.scopeBinding) { + if (parentBinding == this.unknownContainerBinding) { return this; } return new CPPUnknownClass(parentBinding, name); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPUnknownBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPUnknownBinding.java index bae0620ea11..d189f66fe5c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPUnknownBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPUnknownBinding.java @@ -14,6 +14,7 @@ import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredTemplateInstance; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.parser.util.ObjectMap; @@ -27,10 +28,11 @@ import org.eclipse.cdt.core.parser.util.ObjectMap; public interface ICPPUnknownBinding extends ICPPBinding { /** - * Returns the binding of the scope containing this binding. + * Returns the binding of the unknown scope containing this binding, or null if the container is not unknown + * (applies for {@link ICPPDeferredTemplateInstance}). * @since 5.0 */ - public ICPPBinding getContainerBinding(); + public ICPPUnknownBinding getUnknownContainerBinding(); /** * Returns the scope this binding represents. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java index b7c18019952..35c787a73e8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java @@ -55,7 +55,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; @@ -1812,13 +1811,13 @@ public class CPPTemplates { * Attempts to (partially) resolve an unknown binding with the given arguments. */ public static IBinding resolveUnknown(ICPPUnknownBinding unknown, ObjectMap argMap, ICPPScope instantiationScope) throws DOMException { - ICPPBinding parentBinding= unknown.getContainerBinding(); + ICPPUnknownBinding unknownParent= unknown.getUnknownContainerBinding(); IBinding result = unknown; IType t = null; - if (parentBinding instanceof ICPPTemplateTypeParameter) { - t = CPPTemplates.instantiateType((ICPPTemplateTypeParameter) parentBinding, argMap, null); - } else if (parentBinding instanceof ICPPUnknownClassType) { - IBinding binding= CPPTemplates.resolveUnknown((ICPPUnknownClassType) parentBinding, argMap, instantiationScope); + if (unknownParent instanceof ICPPTemplateTypeParameter) { + t = CPPTemplates.instantiateType((ICPPTemplateTypeParameter) unknownParent, argMap, null); + } else if (unknownParent instanceof ICPPUnknownClassType) { + IBinding binding= CPPTemplates.resolveUnknown(unknownParent, argMap, instantiationScope); if (binding instanceof IType) { t = (IType) binding; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplate.java index 7a596f10eb0..5b4960c9ba7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplate.java @@ -22,7 +22,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; @@ -90,8 +89,4 @@ public class CompositeCPPClassTemplate extends CompositeCPPClassType return CPPTemplates.instantiateTemplate(this, arguments, null); } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - return (ICPPTemplateScope) getCompositeScope().getParent(); - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplateSpecialization.java index f648daf2408..96ffa250e8c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplateSpecialization.java @@ -19,7 +19,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; @@ -60,8 +59,4 @@ CompositeCPPClassSpecialization implements ICPPClassTemplate, ICPPInternalTempla public IBinding instantiate(IType[] arguments) { return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding); } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - return (ICPPTemplateScope) getCompositeScope().getParent(); - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPDeferredClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPDeferredClassInstance.java index 87f31fe79a7..9cee44bd6fd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPDeferredClassInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPDeferredClassInstance.java @@ -15,7 +15,6 @@ import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IType; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; @@ -56,9 +55,8 @@ public class CompositeCPPDeferredClassInstance extends CompositeCPPClassType imp return ((ICPPUnknownClassType) rbinding).getUnknownName(); } - public ICPPBinding getContainerBinding() { - ICPPBinding scopeBinding= ((ICPPUnknownClassType) rbinding).getContainerBinding(); - return (ICPPBinding) cf.getCompositeBinding((IIndexFragmentBinding)scopeBinding); + public ICPPUnknownBinding getUnknownContainerBinding() { + return null; } public ICPPScope getUnknownScope() throws DOMException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplate.java index be23482b3e3..845648b449f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplate.java @@ -18,7 +18,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; @@ -50,8 +49,4 @@ public class CompositeCPPFunctionTemplate extends CompositeCPPFunction public IBinding instantiate(IType[] arguments) { return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding); } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - return (ICPPTemplateScope) getFunctionScope().getParent(); - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplateSpecialization.java index af6ee6f80a8..b4268d5d464 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunctionTemplateSpecialization.java @@ -18,7 +18,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; @@ -50,8 +49,4 @@ public class CompositeCPPFunctionTemplateSpecialization extends CompositeCPPFunc public IBinding instantiate(IType[] arguments) { return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding); } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - return (ICPPTemplateScope) getFunctionScope().getParent(); - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPUnknownClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPUnknownClassType.java index 0acae0fba8a..1d090bcd0b0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPUnknownClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPUnknownClassType.java @@ -18,7 +18,6 @@ import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; @@ -143,7 +142,7 @@ class CompositeCPPUnknownClassType extends CompositeCPPBinding implements ICPPUn return ((ICPPUnknownClassType) rbinding).getUnknownName(); } - public ICPPBinding getContainerBinding() { - return ((ICPPUnknownClassType) rbinding).getContainerBinding(); + public ICPPUnknownBinding getUnknownContainerBinding() { + return ((ICPPUnknownClassType) rbinding).getUnknownContainerBinding(); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java index c1589025562..06959cfaa36 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java @@ -208,16 +208,12 @@ class PDOMCPPClassTemplate extends PDOMCPPClassType @Override public IIndexScope getScope() { - return getTemplateScope(); - } - - public PDOMCPPTemplateScope getTemplateScope() { if (scope == null) { scope = new PDOMCPPTemplateScope(); } return scope; } - + @Override public void accept(IPDOMVisitor visitor) throws CoreException { super.accept(visitor); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java index d5911dc3938..7fa7e9eeb5b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplateSpecialization.java @@ -24,7 +24,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPDeferredClassInstance; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; @@ -171,11 +170,4 @@ class PDOMCPPClassTemplateSpecialization extends PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + INSTANCES, getLinkageImpl()); list.accept(visitor); } - - /* (non-Javadoc) - * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition#getTemplateScope() - */ - public ICPPTemplateScope getTemplateScope() throws DOMException { - return (ICPPTemplateScope) getCompositeScope().getParent(); - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java index 7e22349e382..ec20d199197 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPDeferredClassInstance.java @@ -19,7 +19,6 @@ import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; @@ -171,11 +170,7 @@ class PDOMCPPDeferredClassInstance extends PDOMCPPInstance implements ICPPDeferr return new CPPASTName(getNameCharArray()); } - public ICPPBinding getContainerBinding() { - try { - return (ICPPBinding) getParentBinding(); - } catch (CoreException e) { - return null; - } + public ICPPUnknownBinding getUnknownContainerBinding() { + return null; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java index e1fd3dce617..fc5a47229ae 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java @@ -238,8 +238,4 @@ class PDOMCPPFunctionTemplate extends PDOMCPPFunction implements public IIndexBinding getScopeBinding() { return this; } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - return this; - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java index 58684f835aa..b31c341708a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java @@ -21,7 +21,6 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope; import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPDeferredFunctionInstance; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; @@ -151,8 +150,4 @@ class PDOMCPPFunctionTemplateSpecialization extends PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + INSTANCES, getLinkageImpl()); list.accept(visitor); } - - public ICPPTemplateScope getTemplateScope() throws DOMException { - return (ICPPTemplateScope) getFunctionScope().getParent(); - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java index ad4c8f97b31..84e7dcd756e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java @@ -128,7 +128,7 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPVariable implements IPDOMMe return null; } - public ICPPBinding getContainerBinding() { + public ICPPUnknownBinding getUnknownContainerBinding() { return null; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java index 93eae19f311..fa5fc85f62a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java @@ -148,7 +148,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember public IASTName getUnknownName() { return null; } - public ICPPBinding getContainerBinding() { + public ICPPUnknownBinding getUnknownContainerBinding() { return null; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java index 2d816c22ea0..b0a7a7b6c7f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPUnknownClassType.java @@ -20,7 +20,6 @@ import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; @@ -266,9 +265,9 @@ class PDOMCPPUnknownClassType extends PDOMCPPBinding implements ICPPClassScope, return new CPPASTName(getNameCharArray()); } - public ICPPBinding getContainerBinding() { + public ICPPUnknownBinding getUnknownContainerBinding() { try { - return (ICPPBinding) getParentBinding(); + return (ICPPUnknownBinding) getParentBinding(); } catch (CoreException e) { return null; }