From 6c62456688d9c37cbebc1e614cf007db18961ba6 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Tue, 8 Mar 2005 22:26:35 +0000 Subject: [PATCH] Don't visit template parameters until we are ready for them --- .../dom/parser/cpp/CPPASTTemplateDeclaration.java | 10 ++++++---- .../internal/core/dom/parser/cpp/CPPVisitor.java | 15 +++++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java index 209d130e98e..6cf0d46752a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateDeclaration.java @@ -106,10 +106,12 @@ public class CPPASTTemplateDeclaration extends CPPASTNode implements } } - ICPPASTTemplateParameter [] params = getTemplateParameters(); - for ( int i = 0; i < params.length; i++ ) { - if( !params[i].accept( action ) ) return false; - } + //TODO bindings for template parameters aren't done yet, trying to resolve one would result in trouble, + //so don't visit them for now. +// ICPPASTTemplateParameter [] params = getTemplateParameters(); +// for ( int i = 0; i < params.length; i++ ) { +// if( !params[i].accept( action ) ) return false; +// } if( declaration != null ) if( !declaration.accept( action ) ) return false; return true; 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 be3d8ea3335..a36b55ffc0e 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 @@ -520,12 +520,15 @@ public class CPPVisitor { } else if( node instanceof IASTTypeId ){ node = node.getParent(); } else if( node instanceof IASTParameterDeclaration ){ - ICPPASTFunctionDeclarator dtor = (ICPPASTFunctionDeclarator) node.getParent(); - ASTNodeProperty prop = dtor.getPropertyInParent(); - if( prop == IASTSimpleDeclaration.DECLARATOR ) - return dtor.getFunctionScope(); - else if( prop == IASTFunctionDefinition.DECLARATOR ) - return ((IASTCompoundStatement)((IASTFunctionDefinition)dtor.getParent()).getBody()).getScope(); + IASTNode parent = node.getParent(); + if( parent instanceof ICPPASTFunctionDeclarator ){ + ICPPASTFunctionDeclarator dtor = (ICPPASTFunctionDeclarator) parent; + ASTNodeProperty prop = dtor.getPropertyInParent(); + if( prop == IASTSimpleDeclaration.DECLARATOR ) + return dtor.getFunctionScope(); + else if( prop == IASTFunctionDefinition.DECLARATOR ) + return ((IASTCompoundStatement)((IASTFunctionDefinition)dtor.getParent()).getBody()).getScope(); + } //else if( node instanceof ICPPASTTemplateDeclaration ) } else if( node instanceof IASTInitializerExpression ){ IASTNode parent = node.getParent(); while( !(parent instanceof IASTDeclarator) )