Community
Participate
Working Groups
<rant>&@!# Java and it's hacked, kludgy generics! Why couldn't Sun just change the bytecode and get it over with? And give us a built-in self-referential generics type? Then I wouldn't even need to try to put Eclipse through such outrageous hoops...</rant> I have: public interface Frame<C extends Frame<C>> extends Box<C>, ModelComponent<LabelModel, C> { } (I won't go through all the other interfaces, as I'm assuming---hoping---they are irrelevant to this bug.) I try to do a: final Frame<? extends Frame<? extends Frame>> frame=component.getAncestor(Frame.class); (Don't even ask why I tried this.) I get a beautiful error in the IDE, and a log of: !SUBENTRY 1 org.eclipse.jdt.core 4 1005 2005-07-03 11:08:50.300 !MESSAGE java.lang.NullPointerException !STACK 0 java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.implementsInterface(ReferenceBinding.java:681) at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith(ReferenceBinding.java:766) at org.eclipse.jdt.internal.compiler.lookup.TypeBinding.isTypeArgumentContainedBy(TypeBinding.java:356) at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.isEquivalentTo(ParameterizedTypeBinding.java:594) at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith(ReferenceBinding.java:738) at org.eclipse.jdt.internal.compiler.lookup.Scope.greaterLowerBound(Scope.java:2577) at org.eclipse.jdt.internal.compiler.lookup.CaptureBinding.initializeBounds(CaptureBinding.java:104) at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.capture(ParameterizedTypeBinding.java:105) at org.eclipse.jdt.internal.compiler.ast.SingleNameReference.resolveType(SingleNameReference.java:691) at org.eclipse.jdt.internal.compiler.ast.EqualExpression.resolveType(EqualExpression.java:411) at org.eclipse.jdt.internal.compiler.ast.Expression.resolveTypeExpecting(Expression.java:848) at org.eclipse.jdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:222) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:418) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:171) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:396) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1063) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1112) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:305) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:560) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:599) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:165) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:214) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:79) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:718) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:777) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1081) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:98) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044) at org.eclipse.core.runtime.Platform.run(Platform.java:783) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:82) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:147) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:86) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:94) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:75) at org.eclipse.jdt.internal.ui.text.JavaReconciler.process(JavaReconciler.java:339) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:204) Garret
Pls provide complete testcase. It is likely related to interfaces as indicated by the stack trace.
*** This bug has been marked as a duplicate of 101456 ***
I know that this bug has been marked as duplicate. But please check this class declaration where I get the same internal compiler error. By the way, this worked with eclipse 3.1M7. public class Interval<C extends Comparable< ? super C>> implements Comparable<Interval< ? extends C>>, Cloneable { protected int compareLowerBounds(Interval< ? extends C> other) { return 0; } public int compareTo(Interval< ? extends C> other) { return compareLowerBounds(other); } }