1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 10:16:03 +02:00

Fixes CCE by removing need for ICPPTemplateDefinition.getTemplateScope(), bug 231744.

This commit is contained in:
Markus Schorn 2008-05-13 12:01:16 +00:00
parent b41f6b472d
commit 829a826ec9
26 changed files with 39 additions and 153 deletions

View file

@ -25,10 +25,4 @@ public interface ICPPTemplateDefinition extends ICPPBinding {
* @return array of ICPPTemplateParameter * @return array of ICPPTemplateParameter
*/ */
public ICPPTemplateParameter[] getTemplateParameters() throws DOMException; public ICPPTemplateParameter[] getTemplateParameters() throws DOMException;
/**
* Returns the scope defined by this template definition.
* @since 5.0
*/
public ICPPTemplateScope getTemplateScope() throws DOMException;
} }

View file

@ -13,10 +13,8 @@
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
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.IProblemBinding; 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.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; 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.ICPPSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; 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.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.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; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates;
/** /**
@ -131,16 +126,4 @@ public class CPPClassTemplateSpecialization extends CPPClassSpecialization
public String toString() { public String toString() {
return getName(); 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));
}
} }

View file

@ -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.DOMException;
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.IType; 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.ICPPClassTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredTemplateInstance; import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredTemplateInstance;
@ -33,12 +34,13 @@ public class CPPDeferredClassInstance extends CPPUnknownClass implements ICPPDef
private IType[] fArguments; private IType[] fArguments;
private ObjectMap fArgmap; private ObjectMap fArgmap;
// private ICPPScope fUnknownScope; private ICPPClassTemplate fClassTemplate;
public CPPDeferredClassInstance(ICPPClassTemplate orig, ObjectMap argMap, IType[] arguments) { public CPPDeferredClassInstance(ICPPClassTemplate orig, ObjectMap argMap, IType[] arguments) {
super(orig); super(orig);
fArgmap= argMap; fArgmap= argMap;
fArguments= arguments; fArguments= arguments;
fClassTemplate= orig;
} }
private ICPPClassTemplate getClassTemplate() { private ICPPClassTemplate getClassTemplate() {
@ -81,7 +83,7 @@ public class CPPDeferredClassInstance extends CPPUnknownClass implements ICPPDef
} }
public ICPPTemplateDefinition getTemplateDefinition() { public ICPPTemplateDefinition getTemplateDefinition() {
return (ICPPTemplateDefinition) scopeBinding; return fClassTemplate;
} }
public ObjectMap getArgumentMap() { public ObjectMap getArgumentMap() {
@ -108,4 +110,9 @@ public class CPPDeferredClassInstance extends CPPUnknownClass implements ICPPDef
public IBinding getSpecializedBinding() { public IBinding getSpecializedBinding() {
return getTemplateDefinition(); return getTemplateDefinition();
} }
@Override
public IScope getScope() throws DOMException {
return fClassTemplate.getScope();
}
} }

View file

@ -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.ICPPFunctionTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; 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.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope;
import org.eclipse.cdt.core.parser.util.ObjectMap; 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.ProblemBinding;
import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; 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 { public boolean takesVarArgs() throws DOMException {
throw new DOMException( this ); throw new DOMException( this );
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
throw new DOMException( this );
}
} }
protected IFunctionType type = null; protected IFunctionType type = null;

View file

@ -12,19 +12,13 @@
package org.eclipse.cdt.internal.core.dom.parser.cpp; package org.eclipse.cdt.internal.core.dom.parser.cpp;
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.IProblemBinding;
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.ICPPFunctionTemplate; 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.ICPPScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; 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.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.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; 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) { public ICPPSpecialization deferredInstance(ObjectMap argMap, IType[] arguments) {
return null; 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));
}
} }

View file

@ -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.ICPPSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; 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.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.ArrayUtil;
import org.eclipse.cdt.core.parser.util.CharArrayUtils;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.dom.Linkage;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode; 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 { public boolean isGloballyQualified() throws DOMException {
throw new DOMException(this); throw new DOMException(this);
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
throw new DOMException(this);
}
} }
//private IASTName templateName; //private IASTName templateName;
@ -239,15 +234,6 @@ public abstract class CPPTemplateDefinition extends PlatformObject implements IC
return definition != null ? definition : declarations[0]; 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) /* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IBinding#getName() * @see org.eclipse.cdt.core.dom.ast.IBinding#getName()
*/ */

View file

@ -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.ICPPASTTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter; 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.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.ICPPClassTemplatePartialSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; 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.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.ICPPScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; 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.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTemplateParameter;
import org.eclipse.cdt.core.parser.util.ArrayUtil; import org.eclipse.cdt.core.parser.util.ArrayUtil;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
@ -231,10 +229,6 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter implement
return ICPPClassType.EMPTY_CLASS_ARRAY; return ICPPClassType.EMPTY_CLASS_ARRAY;
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
return null;
}
public IBinding resolvePartially(ICPPUnknownBinding parentBinding, ObjectMap argMap, ICPPScope instantiationScope) { public IBinding resolvePartially(ICPPUnknownBinding parentBinding, ObjectMap argMap, ICPPScope instantiationScope) {
return null; return null;
} }
@ -243,7 +237,7 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter implement
return null; return null;
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
return null; return null;
} }
} }

View file

@ -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.IType;
import org.eclipse.cdt.core.dom.ast.ITypedef; 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.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.ICPPScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTypeParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTypeParameter;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
@ -76,7 +75,7 @@ public class CPPTemplateTypeParameter extends CPPTemplateParameter implements
return null; return null;
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
return null; return null;
} }
} }

View file

@ -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.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IScope; 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.ICPPScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition;
import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.dom.Linkage;
@ -30,18 +29,17 @@ import org.eclipse.core.runtime.PlatformObject;
public abstract class CPPUnknownBinding extends PlatformObject public abstract class CPPUnknownBinding extends PlatformObject
implements ICPPUnknownBinding, ICPPInternalBinding, Cloneable { implements ICPPUnknownBinding, ICPPInternalBinding, Cloneable {
private ICPPScope unknownScope; private ICPPScope unknownScope;
protected ICPPBinding scopeBinding; protected ICPPUnknownBinding unknownContainerBinding;
protected IASTName name; protected IASTName name;
public CPPUnknownBinding(ICPPUnknownBinding scopeBinding, IASTName name) { public CPPUnknownBinding(ICPPUnknownBinding scopeBinding, IASTName name) {
super(); super();
this.name = name; this.name = name;
this.scopeBinding = scopeBinding; this.unknownContainerBinding = scopeBinding;
} }
public CPPUnknownBinding(ICPPTemplateDefinition templateDef) { public CPPUnknownBinding(ICPPTemplateDefinition templateDef) {
this.name= new CPPASTName(templateDef.getNameCharArray()); this.name= new CPPASTName(templateDef.getNameCharArray());
this.scopeBinding= templateDef;
} }
public IASTNode[] getDeclarations() { public IASTNode[] getDeclarations() {
@ -82,12 +80,9 @@ public abstract class CPPUnknownBinding extends PlatformObject
} }
public IScope getScope() throws DOMException { public IScope getScope() throws DOMException {
if (scopeBinding instanceof ICPPUnknownBinding) { if (unknownContainerBinding != null) {
return ((ICPPUnknownBinding) scopeBinding).getUnknownScope(); return unknownContainerBinding.getUnknownScope();
} else if (scopeBinding instanceof ICPPTemplateDefinition) {
return ((ICPPTemplateDefinition) scopeBinding).getTemplateScope();
} }
assert false;
return null; return null;
} }
@ -120,7 +115,7 @@ public abstract class CPPUnknownBinding extends PlatformObject
return name; return name;
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
return scopeBinding; return unknownContainerBinding;
} }
} }

View file

@ -96,7 +96,7 @@ public class CPPUnknownClass extends CPPUnknownBinding implements ICPPUnknownCla
} }
public IBinding resolvePartially(ICPPUnknownBinding parentBinding, ObjectMap argMap, ICPPScope instantiationScope) { public IBinding resolvePartially(ICPPUnknownBinding parentBinding, ObjectMap argMap, ICPPScope instantiationScope) {
if (parentBinding == this.scopeBinding) { if (parentBinding == this.unknownContainerBinding) {
return this; return this;
} }
return new CPPUnknownClass(parentBinding, name); return new CPPUnknownClass(parentBinding, name);

View file

@ -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.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding; 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.ICPPBinding;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredTemplateInstance;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope;
import org.eclipse.cdt.core.parser.util.ObjectMap; 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 { 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 <code>null</code> if the container is not unknown
* (applies for {@link ICPPDeferredTemplateInstance}).
* @since 5.0 * @since 5.0
*/ */
public ICPPBinding getContainerBinding(); public ICPPUnknownBinding getUnknownContainerBinding();
/** /**
* Returns the scope this binding represents. * Returns the scope this binding represents.

View file

@ -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.ICPPASTTemplateSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter; 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.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.ICPPClassScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; 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. * Attempts to (partially) resolve an unknown binding with the given arguments.
*/ */
public static IBinding resolveUnknown(ICPPUnknownBinding unknown, ObjectMap argMap, ICPPScope instantiationScope) throws DOMException { public static IBinding resolveUnknown(ICPPUnknownBinding unknown, ObjectMap argMap, ICPPScope instantiationScope) throws DOMException {
ICPPBinding parentBinding= unknown.getContainerBinding(); ICPPUnknownBinding unknownParent= unknown.getUnknownContainerBinding();
IBinding result = unknown; IBinding result = unknown;
IType t = null; IType t = null;
if (parentBinding instanceof ICPPTemplateTypeParameter) { if (unknownParent instanceof ICPPTemplateTypeParameter) {
t = CPPTemplates.instantiateType((ICPPTemplateTypeParameter) parentBinding, argMap, null); t = CPPTemplates.instantiateType((ICPPTemplateTypeParameter) unknownParent, argMap, null);
} else if (parentBinding instanceof ICPPUnknownClassType) { } else if (unknownParent instanceof ICPPUnknownClassType) {
IBinding binding= CPPTemplates.resolveUnknown((ICPPUnknownClassType) parentBinding, argMap, instantiationScope); IBinding binding= CPPTemplates.resolveUnknown(unknownParent, argMap, instantiationScope);
if (binding instanceof IType) { if (binding instanceof IType) {
t = (IType) binding; t = (IType) binding;
} }

View file

@ -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.ICPPSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; 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.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.ArrayUtil;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; 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); return CPPTemplates.instantiateTemplate(this, arguments, null);
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
return (ICPPTemplateScope) getCompositeScope().getParent();
}
} }

View file

@ -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.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; 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.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator;
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
@ -60,8 +59,4 @@ CompositeCPPClassSpecialization implements ICPPClassTemplate, ICPPInternalTempla
public IBinding instantiate(IType[] arguments) { public IBinding instantiate(IType[] arguments) {
return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding); return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding);
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
return (ICPPTemplateScope) getCompositeScope().getParent();
}
} }

View file

@ -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.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IType; 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.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope;
@ -56,9 +55,8 @@ public class CompositeCPPDeferredClassInstance extends CompositeCPPClassType imp
return ((ICPPUnknownClassType) rbinding).getUnknownName(); return ((ICPPUnknownClassType) rbinding).getUnknownName();
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
ICPPBinding scopeBinding= ((ICPPUnknownClassType) rbinding).getContainerBinding(); return null;
return (ICPPBinding) cf.getCompositeBinding((IIndexFragmentBinding)scopeBinding);
} }
public ICPPScope getUnknownScope() throws DOMException { public ICPPScope getUnknownScope() throws DOMException {

View file

@ -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.ICPPFunctionTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; 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.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator;
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
@ -50,8 +49,4 @@ public class CompositeCPPFunctionTemplate extends CompositeCPPFunction
public IBinding instantiate(IType[] arguments) { public IBinding instantiate(IType[] arguments) {
return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding); return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding);
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
return (ICPPTemplateScope) getFunctionScope().getParent();
}
} }

View file

@ -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.ICPPFunctionTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; 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.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope;
import org.eclipse.cdt.core.parser.util.ObjectMap; import org.eclipse.cdt.core.parser.util.ObjectMap;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator;
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding; import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
@ -50,8 +49,4 @@ public class CompositeCPPFunctionTemplateSpecialization extends CompositeCPPFunc
public IBinding instantiate(IType[] arguments) { public IBinding instantiate(IType[] arguments) {
return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding); return InternalTemplateInstantiatorUtil.instantiate(arguments, cf, rbinding);
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
return (ICPPTemplateScope) getFunctionScope().getParent();
}
} }

View file

@ -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.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.ICPPBase; 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.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
@ -143,7 +142,7 @@ class CompositeCPPUnknownClassType extends CompositeCPPBinding implements ICPPUn
return ((ICPPUnknownClassType) rbinding).getUnknownName(); return ((ICPPUnknownClassType) rbinding).getUnknownName();
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
return ((ICPPUnknownClassType) rbinding).getContainerBinding(); return ((ICPPUnknownClassType) rbinding).getUnknownContainerBinding();
} }
} }

View file

@ -208,10 +208,6 @@ class PDOMCPPClassTemplate extends PDOMCPPClassType
@Override @Override
public IIndexScope getScope() { public IIndexScope getScope() {
return getTemplateScope();
}
public PDOMCPPTemplateScope getTemplateScope() {
if (scope == null) { if (scope == null) {
scope = new PDOMCPPTemplateScope(); scope = new PDOMCPPTemplateScope();
} }

View file

@ -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.ICPPTemplateDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; 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.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope;
import org.eclipse.cdt.core.parser.util.ObjectMap; 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.CPPDeferredClassInstance;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; 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()); PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + INSTANCES, getLinkageImpl());
list.accept(visitor); list.accept(visitor);
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition#getTemplateScope()
*/
public ICPPTemplateScope getTemplateScope() throws DOMException {
return (ICPPTemplateScope) getCompositeScope().getParent();
}
} }

View file

@ -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.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.ICPPBase; 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.ICPPClassTemplate;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; 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.ICPPConstructor;
@ -171,11 +170,7 @@ class PDOMCPPDeferredClassInstance extends PDOMCPPInstance implements ICPPDeferr
return new CPPASTName(getNameCharArray()); return new CPPASTName(getNameCharArray());
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
try {
return (ICPPBinding) getParentBinding();
} catch (CoreException e) {
return null; return null;
} }
} }
}

View file

@ -238,8 +238,4 @@ class PDOMCPPFunctionTemplate extends PDOMCPPFunction implements
public IIndexBinding getScopeBinding() { public IIndexBinding getScopeBinding() {
return this; return this;
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
return this;
}
} }

View file

@ -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.ICPPSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; 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.ICPPTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateScope;
import org.eclipse.cdt.core.parser.util.ObjectMap; 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.CPPDeferredFunctionInstance;
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalTemplateInstantiator; 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()); PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + INSTANCES, getLinkageImpl());
list.accept(visitor); list.accept(visitor);
} }
public ICPPTemplateScope getTemplateScope() throws DOMException {
return (ICPPTemplateScope) getFunctionScope().getParent();
}
} }

View file

@ -128,7 +128,7 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPVariable implements IPDOMMe
return null; return null;
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
return null; return null;
} }

View file

@ -148,7 +148,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember
public IASTName getUnknownName() { public IASTName getUnknownName() {
return null; return null;
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
return null; return null;
} }
} }

View file

@ -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.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.ICPPBase; 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.ICPPClassScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; 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.ICPPConstructor;
@ -266,9 +265,9 @@ class PDOMCPPUnknownClassType extends PDOMCPPBinding implements ICPPClassScope,
return new CPPASTName(getNameCharArray()); return new CPPASTName(getNameCharArray());
} }
public ICPPBinding getContainerBinding() { public ICPPUnknownBinding getUnknownContainerBinding() {
try { try {
return (ICPPBinding) getParentBinding(); return (ICPPUnknownBinding) getParentBinding();
} catch (CoreException e) { } catch (CoreException e) {
return null; return null;
} }