diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java index 70e3e79e474..3cf1b9bc373 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTTypeUtil.java @@ -315,7 +315,7 @@ public class ASTTypeUtil { final ICPPTemplateParameter tpar = (ICPPTemplateParameter) type; if (normalize) { result.append('#'); - result.append(Integer.toString(tpar.getParameterPosition(), 16)); + result.append(Integer.toString(tpar.getParameterID(), 16)); } else { result.append(tpar.getName()); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateParameter.java index 43954502856..eb44be0589a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/cpp/ICPPTemplateParameter.java @@ -18,38 +18,44 @@ package org.eclipse.cdt.core.dom.ast.cpp; */ public interface ICPPTemplateParameter extends ICPPBinding { public static final ICPPTemplateParameter[] EMPTY_TEMPLATE_PARAMETER_ARRAY = new ICPPTemplateParameter[0]; - + /** - * The position of the template parameter is determined by the nesting level of the template - * declaration and the offset of this parameter within the template parameter list. - * In every context where a template parameter can be referenced (i.e. within a template declaration) - * the parameter position is unique. + * Returns the zero-based position of this parameter within the template parameter list it belongs to. + * @since 5.1 + */ + short getParameterPosition(); + + /** + * Returns the nesting-level of the template declaration this parameter belongs to. *
- * The nesting level is determined by counting the template declarations that enclose the one that
- * declares this parameter. The position is then computed by
- * (nesting-level << 16) + position-in-parameter-list
.
- *
- * Example: + * The nesting level is determined by counting enclosing template declarations, + * for example: *
* namespace ns { - * template* @since 5.1 */ - int getParameterPosition(); - + short getTemplateNestingLevel(); + + /** + * Returns {@code (getTemplateNestingLevel() << 16) + getParameterPosition()}. + * @since 5.1 + */ + int getParameterID(); + /** * Returns the default value for this template parameter, orclass X { // parameter position: 0x00000000 - * template class Y1 { // parameter position: 0x00010000 + * template class X { // nesting level 0 + * template class Y1 { // nesting level 1 * }; * class Y2 { - * template typename class Z { // parameter position: 0x00010000 + * template typename class Z { // nesting level 1 * void m(); * }; * }; * }; * } - * template // parameter position 0x00000000 - * template // parameter position 0x00010000 + * template // nesting level 0 + * template // nesting level 1 * void ns::X ::Y2::Z ::m() {} *
null
.
* @since 5.1
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java
index b0c4ba1586d..d4e7a38702a 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/Value.java
@@ -99,7 +99,7 @@ public class Value implements IValue {
}
/**
- * Tests whether the value is a template parameter, returns the parameter position of the
+ * Tests whether the value is a template parameter, returns the parameter id of the
* parameter, or null
if it is not a template parameter.
*/
public static int isTemplateParameter(IValue tval) {
@@ -265,7 +265,7 @@ public class Value implements IValue {
@SuppressWarnings("nls")
private static String evaluate(ICPPTemplateParameter param) {
- return "#" + Integer.toHexString(param.getParameterPosition());
+ return "#" + Integer.toHexString(param.getParameterID());
}
@SuppressWarnings("nls")
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 f6d246fa610..fb1d6c8cc52 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
@@ -247,7 +247,7 @@ public abstract class CPPTemplateDefinition extends PlatformObject implements IC
}
public IBinding resolveTemplateParameter(ICPPTemplateParameter templateParameter) {
- int pos= templateParameter.getParameterPosition() & 0xffff;
+ int pos= templateParameter.getParameterPosition();
int tdeclLen= declarations == null ? 0 : declarations.length;
for (int i= -1; i < tdeclLen; i++) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java
index 875bbad1189..6463d051d71 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java
@@ -38,11 +38,11 @@ import org.eclipse.core.runtime.PlatformObject;
public abstract class CPPTemplateParameter extends PlatformObject
implements ICPPTemplateParameter, ICPPInternalBinding, ICPPTwoPhaseBinding {
private IASTName[] declarations;
- private final int position;
+ private final int fParameterID;
public CPPTemplateParameter(IASTName name) {
declarations = new IASTName[] {name};
- position= computeParameterPosition(name);
+ fParameterID= computeParameterPosition(name);
}
private int computeParameterPosition(IASTName name) {
@@ -105,8 +105,16 @@ public abstract class CPPTemplateParameter extends PlatformObject
return declarations[0].toCharArray();
}
- public int getParameterPosition() {
- return position;
+ public int getParameterID() {
+ return fParameterID;
+ }
+
+ public short getParameterPosition() {
+ return (short) fParameterID;
+ }
+
+ public short getTemplateNestingLevel() {
+ return (short) (fParameterID >> 16);
}
public IASTName getPrimaryDeclaration () {
@@ -239,7 +247,7 @@ public abstract class CPPTemplateParameter extends PlatformObject
// use parameter from the index
try {
ICPPTemplateParameter[] params = template.getTemplateParameters();
- final int pos= position & 0xffff;
+ final int pos= getParameterPosition();
if (pos < params.length)
return params[pos];
} catch (DOMException e) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameterMap.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameterMap.java
index 7c7b155c291..739c87e11e7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameterMap.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameterMap.java
@@ -35,36 +35,36 @@ public class CPPTemplateParameterMap implements ICPPTemplateParameterMap {
* Returns whether the map contains the given parameter
*/
public boolean contains(ICPPTemplateParameter templateParameter) {
- return fMap.containsKey(templateParameter.getParameterPosition());
+ return fMap.containsKey(templateParameter.getParameterID());
}
/**
* Adds the mapping to the map.
*/
public void put(ICPPTemplateParameter param, ICPPTemplateArgument value) {
- fMap.put(param.getParameterPosition(), value);
+ fMap.put(param.getParameterID(), value);
}
/**
* Adds the mapping to the map.
*/
- public void put(int parameterPos, ICPPTemplateArgument value) {
- fMap.put(parameterPos, value);
+ public void put(int parameterID, ICPPTemplateArgument value) {
+ fMap.put(parameterID, value);
}
/**
* Returns the value for the given parameter.
*/
public ICPPTemplateArgument getArgument(ICPPTemplateParameter param) {
- return (ICPPTemplateArgument) fMap.get(param.getParameterPosition());
+ return (ICPPTemplateArgument) fMap.get(param.getParameterID());
}
/**
- * Returns the value for the template parameter at the given position.
- * @see ICPPTemplateParameter#getParameterPosition()
+ * Returns the value for the template parameter with the given id.
+ * @see ICPPTemplateParameter#getParameterID()
*/
- public ICPPTemplateArgument getArgument(int paramPosition) {
- return (ICPPTemplateArgument) fMap.get(paramPosition);
+ public ICPPTemplateArgument getArgument(int paramID) {
+ return (ICPPTemplateArgument) fMap.get(paramID);
}
/**
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 773a908fb47..6eeae80b2e9 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
@@ -168,7 +168,7 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter implement
if (!(type instanceof ICPPTemplateTemplateParameter))
return false;
- return getParameterPosition() == ((ICPPTemplateParameter) type).getParameterPosition();
+ return getParameterID() == ((ICPPTemplateParameter) type).getParameterID();
}
public ICPPClassTemplatePartialSpecialization[] getPartialSpecializations() throws DOMException {
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 6e09ee9902a..a7debcbf46a 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
@@ -73,7 +73,7 @@ public class CPPTemplateTypeParameter extends CPPTemplateParameter implements
if (!(type instanceof ICPPTemplateTypeParameter))
return false;
- return getParameterPosition() == ((ICPPTemplateParameter) type).getParameterPosition();
+ return getParameterID() == ((ICPPTemplateParameter) type).getParameterID();
}
public IASTName getUnknownName() {
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 67fb0f1d0ef..ac25268ec54 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
@@ -253,7 +253,7 @@ public class CPPTemplates {
private static boolean argIsParameter(ICPPTemplateArgument arg, ICPPTemplateParameter param) {
if (param instanceof ICPPTemplateNonTypeParameter) {
- return arg.isNonTypeValue() && Value.isTemplateParameter(arg.getNonTypeValue()) == param.getParameterPosition();
+ return arg.isNonTypeValue() && Value.isTemplateParameter(arg.getNonTypeValue()) == param.getParameterID();
}
if (param instanceof IType) {
return arg.isTypeValue() && ((IType) param).isSameType(arg.getTypeValue());
@@ -1917,7 +1917,7 @@ public class CPPTemplates {
return false;
} else {
int parpos= Value.isTemplateParameter(arg.getNonTypeValue());
- if (parpos != par.getParameterPosition())
+ if (parpos != par.getParameterID())
return false;
}
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateNonTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateNonTypeParameter.java
index b0a67d9d351..12b2495a58f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateNonTypeParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateNonTypeParameter.java
@@ -34,10 +34,18 @@ public class CompositeCPPTemplateNonTypeParameter extends CompositeCPPVariable i
fail(); return null;
}
- public int getParameterPosition() {
+ public short getParameterPosition() {
return ((ICPPTemplateParameter)rbinding).getParameterPosition();
}
+
+ public short getTemplateNestingLevel() {
+ return ((ICPPTemplateParameter)rbinding).getTemplateNestingLevel();
+ }
+ public int getParameterID() {
+ return ((ICPPTemplateParameter)rbinding).getParameterID();
+ }
+
public ICPPTemplateArgument getDefaultValue() {
try {
return TemplateInstanceUtil.convert(cf, ((ICPPTemplateTypeParameter)rbinding).getDefaultValue());
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTypeParameter.java
index de6db323197..7c936536bb7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTypeParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPTemplateTypeParameter.java
@@ -37,10 +37,18 @@ public class CompositeCPPTemplateTypeParameter extends CompositeCPPBinding
return cf.getCompositeType(preresult);
}
- public int getParameterPosition() {
+ public short getParameterPosition() {
return ((ICPPTemplateParameter)rbinding).getParameterPosition();
}
+ public short getTemplateNestingLevel() {
+ return ((ICPPTemplateParameter)rbinding).getTemplateNestingLevel();
+ }
+
+ public int getParameterID() {
+ return ((ICPPTemplateParameter)rbinding).getParameterID();
+ }
+
public boolean isSameType(IType type) {
return ((IType)rbinding).isSameType(type);
}
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 e0fa963acb1..389a5a47dd5 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
@@ -237,7 +237,7 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType
public ICPPTemplateParameter adaptTemplateParameter(ICPPTemplateParameter param) {
// Template parameters are identified by their position in the parameter list.
- int pos = param.getParameterPosition() & 0xFFFF;
+ int pos = param.getParameterPosition();
if (params != null) {
return pos < params.length ? params[pos] : 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 ec200d59513..adf700e116f 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
@@ -128,7 +128,7 @@ class PDOMCPPFunctionTemplate extends PDOMCPPFunction
public ICPPTemplateParameter adaptTemplateParameter(ICPPTemplateParameter param) {
// Template parameters are identified by their position in the parameter list.
- int pos = param.getParameterPosition() & 0xFFFF;
+ int pos = param.getParameterPosition();
try {
PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + TEMPLATE_PARAMS, getLinkageImpl());
return (ICPPTemplateParameter) list.getNodeAt(pos);
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 094f06f4b9b..06573644fc4 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
@@ -37,9 +37,10 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPVariable implements IPDOMMe
ICPPTemplateNonTypeParameter {
private static final int MEMBERLIST = PDOMCPPVariable.RECORD_SIZE;
- private static final int PARAMETERPOS= PDOMCPPVariable.RECORD_SIZE + 4;
+ private static final int PARAMETERID= PDOMCPPVariable.RECORD_SIZE + 4;
private static final int DEFAULTVAL= PDOMCPPVariable.RECORD_SIZE + 8;
+ private int fCachedParamID= -1;
/**
* The size in bytes of a PDOMCPPTemplateTypeParameter record in the database.
@@ -51,7 +52,7 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPVariable implements IPDOMMe
ICPPTemplateNonTypeParameter param) throws CoreException {
super(pdom, parent, param);
final Database db = pdom.getDB();
- db.putInt(record + PARAMETERPOS, param.getParameterPosition());
+ db.putInt(record + PARAMETERID, param.getParameterID());
ICPPTemplateArgument val= param.getDefaultValue();
if (val != null) {
IValue sval= val.getNonTypeValue();
@@ -92,13 +93,30 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPVariable implements IPDOMMe
}
}
- public int getParameterPosition() {
- try {
- final Database db = pdom.getDB();
- return db.getInt(record + PARAMETERPOS);
- } catch (CoreException e) {
- CCorePlugin.log(e);
- return -1;
+ public short getParameterPosition() {
+ readParamID();
+ return (short) fCachedParamID;
+ }
+
+ public short getTemplateNestingLevel() {
+ readParamID();
+ return (short)(fCachedParamID >> 16);
+ }
+
+ public int getParameterID() {
+ readParamID();
+ return fCachedParamID;
+ }
+
+ private void readParamID() {
+ if (fCachedParamID == -1) {
+ try {
+ final Database db = pdom.getDB();
+ fCachedParamID= db.getInt(record + PARAMETERID);
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ fCachedParamID= -2;
+ }
}
}
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 4ced778fcf3..c41d3410c9c 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
@@ -43,14 +43,16 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember
private static final int DEFAULT_TYPE = PDOMCPPBinding.RECORD_SIZE + 0;
private static final int MEMBERLIST = PDOMCPPBinding.RECORD_SIZE + 4;
- private static final int PARAMETERPOS= PDOMCPPBinding.RECORD_SIZE + 8;
+ private static final int PARAMETERID= PDOMCPPBinding.RECORD_SIZE + 8;
/**
* The size in bytes of a PDOMCPPTemplateTypeParameter record in the database.
*/
@SuppressWarnings("hiding")
protected static final int RECORD_SIZE = PDOMCPPBinding.RECORD_SIZE + 12;
+
private ICPPScope fUnknownScope;
+ private int fCachedParamID= -1;
public PDOMCPPTemplateTypeParameter(PDOM pdom, PDOMNode parent,
ICPPTemplateTypeParameter param) throws CoreException {
@@ -58,7 +60,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember
try {
final Database db = pdom.getDB();
- db.putInt(record + PARAMETERPOS, param.getParameterPosition());
+ db.putInt(record + PARAMETERID, param.getParameterID());
IType dflt = param.getDefault();
if (dflt != null) {
PDOMNode typeNode = getLinkageImpl().addType(this, dflt);
@@ -85,13 +87,30 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember
return IIndexCPPBindingConstants.CPP_TEMPLATE_TYPE_PARAMETER;
}
- public int getParameterPosition() {
- try {
- final Database db = pdom.getDB();
- return db.getInt(record + PARAMETERPOS);
- } catch (CoreException e) {
- CCorePlugin.log(e);
- return -1;
+ public short getParameterPosition() {
+ readParamID();
+ return (short) fCachedParamID;
+ }
+
+ public short getTemplateNestingLevel() {
+ readParamID();
+ return (short)(fCachedParamID >> 16);
+ }
+
+ public int getParameterID() {
+ readParamID();
+ return fCachedParamID;
+ }
+
+ private void readParamID() {
+ if (fCachedParamID == -1) {
+ try {
+ final Database db = pdom.getDB();
+ fCachedParamID= db.getInt(record + PARAMETERID);
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ fCachedParamID= -2;
+ }
}
}
@@ -115,7 +134,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember
if (!(type instanceof ICPPTemplateTypeParameter))
return false;
- return getParameterPosition() == ((ICPPTemplateParameter) type).getParameterPosition();
+ return getParameterID() == ((ICPPTemplateParameter) type).getParameterID();
}
public IType getDefault() {