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 39bdcef9e6b..092a8d96d95 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 @@ -6297,4 +6297,20 @@ public class AST2CPPTests extends AST2BaseTest { ba.assertNonProblem("y) {", 1, ICPPField.class); ba.assertProblem("y; // y is not defined", 1); } + + // class A { + // int method(int a = GREEN) { + // return RED; + // } + // int x = GREEN; // GREEN is not defined + // enum Color { + // RED, GREEN + // }; + // }; + public void testScopeOfClassMember_259648() throws Exception { + BindingAssertionHelper ba= new BindingAssertionHelper(getAboveComment(), true); + ba.assertNonProblem("GREEN)", 5, IEnumerator.class); + ba.assertNonProblem("RED;", 3, IEnumerator.class); + ba.assertProblem("GREEN;", 5); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java index 9c2a5d9adc3..691bb083e22 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java @@ -1742,8 +1742,10 @@ public class CPPSemantics { if (temp instanceof IProblemBinding) continue; - if (!(temp instanceof ICPPMember) && !(temp instanceof IType) && !declaredBefore) + if (!declaredBefore && !(temp instanceof ICPPMember) && !(temp instanceof IType) && + !(temp instanceof IEnumerator)) { continue; + } if (temp instanceof ICPPUsingDeclaration) { IBinding[] bindings = ((ICPPUsingDeclaration) temp).getDelegates(); mergeResults(data, bindings, false);