From d212cbc76312b547cdf0a57cee7b8ae9f855a24d Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 6 Oct 2010 14:07:54 +0000 Subject: [PATCH] Bug 326778: Bogus ambiguity due to different using declarations for the same variable. --- .../tests/IndexCPPBindingResolutionBugs.java | 23 ++++++++++++++++++- .../parser/cpp/semantics/CPPSemantics.java | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java index d628b64b5a5..85395ec46bc 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionBugs.java @@ -1279,7 +1279,6 @@ public class IndexCPPBindingResolutionBugs extends IndexBindingResolutionTestBas // char32_t c32; // f(c16); f(c32); // } - public void testChar16_Bug319186() throws Exception { IFunction f= getBindingFromASTName("f(c16)", 1); assertEquals("char16_t", ASTTypeUtil.getType(f.getType().getParameterTypes()[0])); @@ -1287,4 +1286,26 @@ public class IndexCPPBindingResolutionBugs extends IndexBindingResolutionTestBas f= getBindingFromASTName("f(c32)", 1); assertEquals("char32_t", ASTTypeUtil.getType(f.getType().getParameterTypes()[0])); } + + // namespace ns { + // extern int* var; + // void fun(); + // typedef int Type; + // } + // using ns::var; + // using ns::fun; + // using ns::Type; + + // #include "header.h" + // using namespace ::ns; + // void sabel() { + // var = 0; + // fun(); + // Type x; + // } + public void test_Bug326778() throws Exception { + IVariable v= getBindingFromASTName("var", 0); + IFunction f= getBindingFromASTName("fun", 0); + ITypedef t= getBindingFromASTName("Type", 0); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java index 89060122494..7f35c1daf29 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java @@ -1926,7 +1926,7 @@ public class CPPSemantics { } else { if (obj == null) { obj = temp; - } else if (obj == temp) { + } else if (obj.equals(temp)) { // Ok, delegates are synonyms. } else { int c = compareByRelevance(data.tu, obj, temp);