### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core.tests.compiler Index: src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java,v retrieving revision 1.199 diff -u -r1.199 AnnotationTest.java --- src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java 17 Aug 2009 17:46:05 -0000 1.199 +++ src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java 27 Aug 2009 09:15:39 -0000 @@ -8850,4 +8850,23 @@ null, null, JavacTestOptions.Excuse.EclipseHasSomeMoreWarnings); } + +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=287009 +public void test270() { + this.runNegativeTest( + new String[] { + "Test.java", + "public class Test {\n" + + " @interface Anno {\n" + + " Anno value();\n" + + " }\n" + + "}\n", + }, + "----------\n" + + "1. ERROR in Test.java (at line 3)\n" + + " Anno value();\n" + + " ^^^^\n" + + "Cycle detected: the annotation type Test.Anno cannot contain attributes of the annotation type itself\n" + + "----------\n"); +} } #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java,v retrieving revision 1.135 diff -u -r1.135 ReferenceBinding.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java 19 Jun 2009 18:47:04 -0000 1.135 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java 27 Aug 2009 09:15:49 -0000 @@ -669,7 +669,7 @@ MethodBinding[] currentMethods = methods(); boolean inCycle = false; // check each method before failing for (int i = 0, l = currentMethods.length; i < l; i++) { - TypeBinding returnType = currentMethods[i].returnType.leafComponentType(); + TypeBinding returnType = currentMethods[i].returnType.leafComponentType().erasure(); if (this == returnType) { if (this instanceof SourceTypeBinding) { MethodDeclaration decl = (MethodDeclaration) currentMethods[i].sourceMethod();