diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java index 2f83a129624..f16d16bfe32 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java @@ -3143,4 +3143,21 @@ public class AST2Tests extends AST2BaseTest { ITypedef e = (ITypedef) col.getName(2).resolveBinding(); assertSame( e.getType(), etion ); } + + public void testBug98365() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("typedef struct _loop_data { \n"); //$NON-NLS-1$ + buffer.append(" enum { PIPERR } pipe_err; \n"); //$NON-NLS-1$ + buffer.append("} loop_data; \n"); //$NON-NLS-1$ + buffer.append("void f(){ \n"); //$NON-NLS-1$ + buffer.append(" PIPERR; \n"); //$NON-NLS-1$ + buffer.append("} \n"); //$NON-NLS-1$ + + IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true); + CNameCollector col = new CNameCollector(); + tu.accept(col); + + IEnumerator etor = (IEnumerator) col.getName(2).resolveBinding(); + assertSame( etor, col.getName(6).resolveBinding() ); + } } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java index 6a8490cc75b..31d2ad41d02 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java @@ -1316,7 +1316,7 @@ public class CVisitor { for( int i = 0; i < nested.length; i++ ){ if( nested[i] instanceof IASTSimpleDeclaration ){ IASTDeclSpecifier d = ((IASTSimpleDeclaration)nested[i]).getDeclSpecifier(); - if( d instanceof ICASTCompositeTypeSpecifier ) { + if( d instanceof ICASTCompositeTypeSpecifier || d instanceof IASTEnumerationSpecifier ) { Object obj = checkForBinding( scope, d, name, typesOnly, prefixMap ); if( prefixMap == null && resultName == null ){ resultName = (IASTName) obj;