Community
Participate
Working Groups
Build 2.1-M3 Defined following source implementation of java.lang.Object: [package java.lang; public class Object implements I { } interface I { } ] then defined another type in same project, inheriting from Object, and built it incrementally: INCREMENTAL build Compile this changed source file src/Compile.java About to compile src/Compile.java java.lang.StackOverflowError at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:724) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:748) at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle (ClassScope.java:731)
Steps to reproduce: - in Project P, define type java/lang/Object.java in src source folder - perform a full build - add one type X: public class X extends Exception { } - incremental build (X) There is no check for circularity on Object superinterface hierarchy (Object should not be allowed to have any)
Suggested fix, add following to ClassScope#connectSuperinterfaces if (isJavaLangObject(sourceType)) { problemReporter().hierarchyCircularity (sourceType, superInterface, referenceContext.superInterfaces[i]); sourceType.tagBits |= HierarchyHasProblems; superInterface.tagBits |= HierarchyHasProblems; return false; }
Replaced with a check up front to detect java.lang.Object... if it has supertypes, we now report an error against it, but do not propagate the hierarchy problem to every subtype.
Verified.