diff options
author | Markus Schorn | 2009-08-04 15:42:49 +0000 |
---|---|---|
committer | Markus Schorn | 2009-08-04 15:42:49 +0000 |
commit | 766ecf9a49deedd89d2b7baad4c7f2fa26709165 (patch) | |
tree | 834b552eae4662b2620e1016b3f694de113018b5 /core | |
parent | 8510f0c0d233abba5717b72c8a514c26761b5a81 (diff) | |
download | org.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')
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); |