From f6e95e294202497e05c34682d422b55979ce9333 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Tue, 18 Nov 2008 09:25:21 +0000 Subject: [PATCH] Correcting bit-masks when determining parameter offset for template parameters, related to 253080. --- .../cdt/core/dom/ast/cpp/ICPPTemplateParameter.java | 10 +++++----- .../core/dom/parser/cpp/CPPTemplateDefinition.java | 2 +- .../core/dom/parser/cpp/CPPTemplateParameter.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) 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 2f1ef12b6de..43954502856 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 @@ -32,18 +32,18 @@ public interface ICPPTemplateParameter extends ICPPBinding { * Example: *
 	 * namespace ns {
-	 *    template class X {       // parameter position: 0x0000
-	 *       template class Y1 {   // parameter position: 0x0100
+	 *    template class X {       // parameter position: 0x00000000
+	 *       template class Y1 {   // parameter position: 0x00010000
 	 *       };
 	 *       class Y2 {
-	 *          template typename class Z { // parameter position: 0x0100
+	 *          template typename class Z { // parameter position: 0x00010000
 	 *             void m();
 	 *          };  
 	 *       };
 	 *    };
 	 * }
-	 * template                    // parameter position 0x0000
-	 *    template                 // parameter position 0x0100
+	 * template                    // parameter position 0x00000000
+	 *    template                 // parameter position 0x00010000
 	 *       void ns::X::Y2::Z::m() {}
 	 * 
* @since 5.1 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 7a2f607a973..f6d246fa610 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() & 0xff; + int pos= templateParameter.getParameterPosition() & 0xffff; 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 b28909cbee3..875bbad1189 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 @@ -239,7 +239,7 @@ public abstract class CPPTemplateParameter extends PlatformObject // use parameter from the index try { ICPPTemplateParameter[] params = template.getTemplateParameters(); - final int pos= position & 0xff; + final int pos= position & 0xffff; if (pos < params.length) return params[pos]; } catch (DOMException e) {