diff options
author | Sergey Prigogin | 2012-04-27 03:23:14 +0000 |
---|---|---|
committer | Sergey Prigogin | 2012-04-27 03:37:56 +0000 |
commit | b6a384b943d12fbf7fccdb6142fcfed7de8d8a01 (patch) | |
tree | e6c7423ec8cb6df6a7517b172d44de1b973ecd34 | |
parent | 5ef2d0db02e234e01ca294f3a90a4b6602680fe1 (diff) | |
download | org.eclipse.cdt-b6a384b943d12fbf7fccdb6142fcfed7de8d8a01.tar.gz org.eclipse.cdt-b6a384b943d12fbf7fccdb6142fcfed7de8d8a01.tar.xz org.eclipse.cdt-b6a384b943d12fbf7fccdb6142fcfed7de8d8a01.zip |
Bug 377838 - Name resolution gets confused by a class and a namespace
with the same name
2 files changed, 21 insertions, 1 deletions
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 53a03726d83..7e5f834f080 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 @@ -4954,7 +4954,24 @@ public class AST2TemplateTests extends AST2BaseTest { tu = validateCopy(tu); assertEquals(1, tu.getDeclarations().length); } - + + // namespace A { + // + // template <typename T> + // struct A { + // A(); + // }; + // + // template <typename U> + // A<U>::A() {} + // + // A<int> a; + // + // } + public void testBug377838() throws Exception { + parseAndCheckBindings(); + } + // namespace N { // inline namespace M { // template<class T> void f(T&) { } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java index 4410baffb25..df54026c78b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java @@ -11,6 +11,7 @@ * Bryan Wilkinson (QNX) * Andrew Ferguson (Symbian) * Jens Elmenthaler - http://bugs.eclipse.org/173458 (camel case completion) + * Sergey Prigogin (Google) *******************************************************************************/ package org.eclipse.cdt.internal.core.dom.parser.cpp; @@ -136,6 +137,8 @@ abstract public class CPPScope implements ICPPASTInternalScope { return false; IASTName segmentName = segments[i]; + if ((scopeName instanceof ICPPASTTemplateId) != (segmentName instanceof ICPPASTTemplateId)) + return false; if (!CharArrayUtils.equals(scopeName.getSimpleID(), segmentName.getSimpleID())) return false; scope= scope.getParent(); |