From 6461cf1c92d3692282f491dd0b4d01edcbdedf3b Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Wed, 8 Jun 2005 15:58:40 +0000 Subject: [PATCH] fix bug 98784 --- .../parser/tests/ast2/AST2TemplateTests.java | 16 ++++++++++++++++ .../core/dom/parser/cpp/CPPSemantics.java | 2 ++ 2 files changed, 18 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index e1458248263..250f1e50d0d 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -1657,4 +1657,20 @@ public class AST2TemplateTests extends AST2BaseTest { assertSame( i, col.getName(14).resolveBinding() ); } + + public void testBug98784() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("class A { \n"); //$NON-NLS-1$ + buffer.append(" template void f( T ) { \n"); //$NON-NLS-1$ + buffer.append(" begin(); \n"); //$NON-NLS-1$ + buffer.append(" } \n"); //$NON-NLS-1$ + buffer.append(" void begin(); \n"); //$NON-NLS-1$ + buffer.append("}; \n"); //$NON-NLS-1$ + + IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.CPP ); + CPPNameCollector col = new CPPNameCollector(); + tu.accept( col ); + + assertSame( col.getName(5).resolveBinding(), col.getName(6).resolveBinding() ); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java index 1012356f7fd..4e71e43bcd0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java @@ -297,6 +297,8 @@ public class CPPSemantics { parent = parent.getParent(); } if( parent instanceof IASTFunctionDefinition ){ + while( parent.getParent() instanceof ICPPASTTemplateDeclaration ) + parent = parent.getParent(); if( parent.getPropertyInParent() != IASTCompositeTypeSpecifier.MEMBER_DECLARATION ) return false;