From c1ca84452f15b3e976bc8066c2d4af7df70d5910 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Thu, 14 Dec 2006 14:09:28 +0000 Subject: [PATCH] Fix for 168054, name resolution of parameters in method impls. --- .../tests/IndexBindingResolutionBugs.java | 32 +++++++++++++++++++ .../core/dom/parser/cpp/CPPVisitor.java | 2 ++ 2 files changed, 34 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/IndexBindingResolutionBugs.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/IndexBindingResolutionBugs.java index 0e867ca48e2..c551dee718e 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/IndexBindingResolutionBugs.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/IndexBindingResolutionBugs.java @@ -89,4 +89,36 @@ public class IndexBindingResolutionBugs extends IndexBindingResolutionTestBase { getBindingFromASTName("fooovr('", 6); } + + // // header + // class Base { + // public: + // void foo(int i); + // int foo2(int i); + // }; + // + // void func(int k); + // void func2(int i); + + // // references + // #include "header.h" + // void Base::foo(int i) { + // i=2; + // } + // void Base::foo2(int j) { + // j=2; + // } + // void func(int k) { + // k=2; + // } + // void func2(int l) { + // l=2; + // } + public void test168054() { + getBindingFromASTName("i=2", 1); + getBindingFromASTName("j=2", 1); + getBindingFromASTName("k=2", 1); + getBindingFromASTName("l=2", 1); + } + } 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 21337c2c454..ef53b6b1f3a 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 @@ -525,6 +525,8 @@ public class CPPVisitor { } else if( temp instanceof IProblemBinding ){ //problems with the function, still create binding for the parameter binding = new CPPParameter( name ); + } else if ( temp instanceof IIndexBinding ) { + binding= new CPPParameter( name ); } } else if( parent instanceof ICPPASTTemplateDeclaration ) { return CPPTemplates.createBinding( param );