From 5122fa341709d72054c0afc97845bbf12d33ffbd Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Mon, 13 Jun 2005 19:00:50 +0000 Subject: [PATCH] 95220 --- .../internal/core/dom/parser/cpp/CPPVisitor.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java index cd01d2b7b94..7ca3bbd02fe 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java @@ -460,13 +460,15 @@ public class CPPVisitor { name = ns[ ns.length - 1 ]; } + ASTNodeProperty prop = parent.getPropertyInParent(); if( parent instanceof IASTTypeId ) return CPPSemantics.resolveBinding( name ); - else if( parent.getPropertyInParent() == ICPPASTTemplateSpecialization.OWNED_DECLARATION || - parent.getPropertyInParent() == ICPPASTExplicitTemplateInstantiation.OWNED_DECLARATION ) + else if( prop == ICPPASTTemplateSpecialization.OWNED_DECLARATION || + prop == ICPPASTExplicitTemplateInstantiation.OWNED_DECLARATION ) { return CPPTemplates.createFunctionSpecialization( name ); - } + } else if( prop == ICPPASTTemplateDeclaration.PARAMETER ) + return CPPTemplates.createBinding( (ICPPASTTemplateParameter) parent ); boolean template = false; ICPPScope scope = (ICPPScope) getContainingScope( (IASTNode) name ); @@ -489,7 +491,6 @@ public class CPPVisitor { } } - ASTNodeProperty prop = parent.getPropertyInParent(); if( prop == IASTDeclarationStatement.DECLARATION ){ //implicit scope, see 6.4-1 prop = parent.getParent().getPropertyInParent(); @@ -1051,7 +1052,9 @@ public class CPPVisitor { { break; } else if( prop == IASTDeclarator.DECLARATOR_NAME ){ - IASTNode d = name.getParent().getParent(); + IASTNode d = name.getParent(); + while( d.getParent() instanceof IASTDeclarator ) + d = d.getParent(); if( d.getPropertyInParent() == IASTParameterDeclaration.DECLARATOR ){ break; }