Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMarkus Schorn2009-08-04 15:42:49 +0000
committerMarkus Schorn2009-08-04 15:42:49 +0000
commit766ecf9a49deedd89d2b7baad4c7f2fa26709165 (patch)
tree834b552eae4662b2620e1016b3f694de113018b5 /core
parent8510f0c0d233abba5717b72c8a514c26761b5a81 (diff)
downloadorg.eclipse.cdt-766ecf9a49deedd89d2b7baad4c7f2fa26709165.tar.gz
org.eclipse.cdt-766ecf9a49deedd89d2b7baad4c7f2fa26709165.tar.xz
org.eclipse.cdt-766ecf9a49deedd89d2b7baad4c7f2fa26709165.zip
Typedef recursion, bug 285457.v200908070606
Diffstat (limited to 'core')
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java6
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java6
2 files changed, 10 insertions, 2 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
index 6eb4aebb988..710153ea873 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java
@@ -7201,6 +7201,12 @@ public class AST2CPPTests extends AST2BaseTest {
parseAndCheckBindings(code, ParserLanguage.CPP);
}
+
+ // typedef enum enum_name enum_name;
+ public void testTypedefRecursion_285457() throws Exception {
+ BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true);
+ ba.assertProblem("enum_name", 9);
+ }
// class A {
// friend inline void m(A p) {}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java
index bea77da5047..62e471c9eea 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java
@@ -367,9 +367,11 @@ public class CPPVisitor extends ASTQueries {
// 7.1.5.3-2 ... If name lookup does not find a declaration for the name, the elaborated-type-specifier is ill-formed
// unless it is of the simple form class-key identifier
- if (mustBeSimple && elabType.getName() instanceof ICPPASTQualifiedName)
+ if (mustBeSimple &&
+ (elabType.getName() instanceof ICPPASTQualifiedName || elabType.getKind() == IASTElaboratedTypeSpecifier.k_enum)) {
return binding;
-
+ }
+
try {
boolean template = false;
ICPPScope scope = (ICPPScope) getContainingScope(name);

Back to the top