### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java,v retrieving revision 1.143 diff -u -r1.143 EnumTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java 28 Apr 2009 17:17:33 -0000 1.143 +++ src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java 19 Jun 2009 16:26:44 -0000 @@ -6200,6 +6200,35 @@ "HELLORED", null, JavacTestOptions.Excuse.EclipseHasSomeMoreWarnings); } - +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=273990 +public void test173() { + this.runNegativeTest( + new String[] { + "E.java", + "public enum E {\n" + + " A(E.STATIK);\n" + + " private static int STATIK = 1;\n" + + " private E(final int i) {}\n" + + "}\n", + "E2.java", + "public enum E2 {\n" + + " A(E2.STATIK);\n" + + " static int STATIK = 1;\n" + + " private E2(final int i) {}\n" + + "}\n" + }, + "----------\n" + + "1. ERROR in E.java (at line 2)\n" + + " A(E.STATIK);\n" + + " ^^^^^^\n" + + "Cannot reference a field before it is defined\n" + + "----------\n" + + "----------\n" + + "1. ERROR in E2.java (at line 2)\n" + + " A(E2.STATIK);\n" + + " ^^^^^^\n" + + "Cannot reference a field before it is defined\n" + + "----------\n" + ); +} } - #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java,v retrieving revision 1.140 diff -u -r1.140 QualifiedNameReference.java --- compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java 7 Mar 2009 00:58:59 -0000 1.140 +++ compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java 19 Jun 2009 16:26:45 -0000 @@ -928,7 +928,7 @@ ReferenceBinding declaringClass = fieldBinding.original().declaringClass; SourceTypeBinding sourceType = methodScope.enclosingSourceType(); // check for forward references - if ((this.indexOfFirstFieldBinding == 1 || (fieldBinding.modifiers & ClassFileConstants.AccEnum) != 0) // enum constants are checked even when qualified + if ((this.indexOfFirstFieldBinding == 1 || (fieldBinding.modifiers & ClassFileConstants.AccEnum) != 0 || (!fieldBinding.isFinal() && declaringClass.isEnum())) // enum constants are checked even when qualified && sourceType == declaringClass && methodScope.lastVisibleFieldID >= 0 && fieldBinding.id >= methodScope.lastVisibleFieldID