Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Prigogin2012-04-27 03:23:14 +0000
committerSergey Prigogin2012-04-27 03:37:56 +0000
commitb6a384b943d12fbf7fccdb6142fcfed7de8d8a01 (patch)
treee6c7423ec8cb6df6a7517b172d44de1b973ecd34
parent5ef2d0db02e234e01ca294f3a90a4b6602680fe1 (diff)
downloadorg.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
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java19
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPScope.java3
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();

Back to the top