Bug 222326 - [1.5][compiler] NullPointerException during: "Compute launch button tooltip".
Summary: [1.5][compiler] NullPointerException during: "Compute launch button tooltip".
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.3.1   Edit
Hardware: PC Windows XP
: P3 major (vote)
Target Milestone: 3.4 M7   Edit
Assignee: Kent Johnson CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 196920 (view as bug list)
Depends on:
Blocks:
 
Reported: 2008-03-11 18:32 EDT by Bjoern Witt CLA
Modified: 2008-04-28 11:11 EDT (History)
4 users (show)

See Also:


Attachments
Proposed patch (1.67 KB, patch)
2008-04-17 11:18 EDT, Kent Johnson CLA
no flags Details | Diff
Testcase (2.47 KB, patch)
2008-04-21 13:39 EDT, Kent Johnson CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Bjoern Witt CLA 2008-03-11 18:32:30 EDT
Build ID: M20080221-1800

Steps To Reproduce:
1. I have two java projects with complex inheritence and lots of generic types with upper bound wildcards, like: 
public interface GModelElement<
      NAMESPACE  extends GNamespace<?, ?, ?, ?, ?>
    , PACKAGE    extends GCwmPackage<?, ?, ?, ?, ?, ?>
    , DEPENDENCY extends GDependency<?, ?, ?, ?, ?>
    , CONSTRAINT extends GConstraint<?, ?, ?, ?, ?>
> extends 
  ModelElement
, OwnedElement<NAMESPACE>
, Importer<PACKAGE>
, ClientDependency<DEPENDENCY>
, UnderConstraint<CONSTRAINT>
{
... and so on ...
2. Sorry I can't provide the full code, cause I didn't released it under a licence up to now, but it will be general public when finished.
3. The bug wasn't occurring from the beginning of the project, it rised after I had done more and more inheritence with those interfaces all defining new upper-bounds on each level. I can'say when it starts, but now there are 49 interfaces defined and the NullPointer occurres in every action of code-completion, except using it for defining the imports in top of a class/interface.
4. The configured buildpath is using two eclipse-projects, one for the API that contains only interfaces, and the other containing the related implementations for the API.
5. I even tried to start eclipse with more memory up to 1024M but the bug is still reproduceable
6. Hope you can help fixing this situation, cause coding without code-completion in such a complex project is very heavy, so I really need help on this Bug...


More information:
I found a StackTrace in the Log-File:

!ENTRY org.eclipse.jdt.ui 2 0 2008-03-11 21:05:32.437
!MESSAGE The 'org.eclipse.jdt.ui.JavaTypeCompletionProposalComputer' proposal computer from the 'org.eclipse.jdt.ui' plug-in did not complete normally. The extension has thrown a runtime exception.
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jdt.internal.compiler.lookup.TypeBinding.findSuperTypeWithSameErasure(TypeBinding.java:308)
	at org.eclipse.jdt.internal.compiler.lookup.TypeBinding.isTypeArgumentContainedBy(TypeBinding.java:664)
...

OR


!ENTRY org.eclipse.jface.text 4 0 2008-03-11 21:12:07.937
!MESSAGE Unexpected runtime error while computing a text hover
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jdt.internal.compiler.lookup.TypeBinding.findSuperTypeWithSameErasure(TypeBinding.java:308)
	at org.eclipse.jdt.internal.compiler.lookup.TypeBinding.isTypeArgumentContainedBy(TypeBinding.java:664)
	at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.isEquivalentTo(ParameterizedTypeBinding.java:668)
	at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.implementsInterface(ReferenceBinding.java:774)
	at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith0(ReferenceBinding.java:899)
	at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith(ReferenceBinding.java:852)
	at org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck(TypeVariableBinding.java:146)
	at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.boundCheck(ParameterizedTypeBinding.java:70)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.checkBounds(ParameterizedSingleTypeReference.java:40)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.checkParameterizedTypeBounds(ClassScope.java:787)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.checkParameterizedTypes(CompilationUnitScope.java:206)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:275)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.java:472)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:965)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.java:472)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:965)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.java:472)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:965)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.java:472)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:965)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:449)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:503)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.resolveSingleImport(CompilationUnitScope.java:696)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2374)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:114)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1123)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperInterfaces(ClassScope.java:917)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:963)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:114)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1123)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:837)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:962)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:114)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1123)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:837)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:962)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:114)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1123)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:837)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:962)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:449)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:503)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.resolveSingleImport(CompilationUnitScope.java:696)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2374)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
	at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
	at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:114)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1123)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:837)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:962)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
	at org.eclipse.jdt.internal.compiler.ast.SingleTypeReference.getTypeBinding(SingleTypeReference.java:44)
	at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:163)
	at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:114)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1123)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:837)
	at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:962)
	at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
	at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:681)
	at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:155)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:340)
	at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:334)
	at org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getHoverInfo(AbstractJavaEditorTextHover.java:117)
	at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo(BestMatchHover.java:102)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo(JavaEditorTextHoverProxy.java:69)
	at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:165)
Comment 1 Philipe Mulet CLA 2008-03-16 23:55:32 EDT
Can you reproduce it with a 3.4 build ? (say 3.4M5 for instance)
Given the complexity of your code, I am afraid that a testcase will be mandated.
Comment 2 Philipe Mulet CLA 2008-03-17 00:04:34 EDT
The NPE would indicate that superinterfaces are still null, where an array should have been assigned at that stage.
Comment 3 Kent Johnson CLA 2008-03-27 16:27:15 EDT
Bjoern - were you able to reproduce this problem with a recent 3.4 build ?
Comment 4 Kent Johnson CLA 2008-03-28 14:29:28 EDT
waiting for feedback from a recent 3.4 build
Comment 5 Kent Johnson CLA 2008-03-31 12:05:00 EDT
From Bjoern in an email:

this stacktrace below occured after downloading the latest ganymede Build-ID (UTC): 20080304-640
The first Exception might be caused by startup, cause Ganymede gave me an error Msg on startup.

[first stacktrace was deleted]

But the second stacktrace is caused by the reproducable code completion with my workspace.

!SESSION 2008-03-19 23:27:58.687 -----------------------------------------------
eclipse.buildId=M20080221-1800
java.version=1.6.0_03
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments:  eclipse
Command-line arguments:  -os win32 -ws win32 -arch x86 -data C:\NullPointer eclipse

!ENTRY org.eclipse.jface.text 4 0 2008-03-19 23:30:17.234
!MESSAGE Unexpected runtime error while computing a text hover
!STACK 0
java.lang.NullPointerException
    at org.eclipse.jdt.internal.compiler.lookup.TypeBinding.findSuperTypeWithSameErasure(TypeBinding.java:308)
    at org.eclipse.jdt.internal.compiler.lookup.TypeBinding.isTypeArgumentContainedBy(TypeBinding.java:664)
    at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.isEquivalentTo(ParameterizedTypeBinding.java:668)
    at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.implementsInterface(ReferenceBinding.java:774)
    at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith0(ReferenceBinding.java:899)
    at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.isCompatibleWith(ReferenceBinding.java:852)
    at org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.boundCheck(TypeVariableBinding.java:146)
    at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.boundCheck(ParameterizedTypeBinding.java:70)
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.checkBounds(ParameterizedSingleTypeReference.java:40)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.checkParameterizedTypeBounds(ClassScope.java:787)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.checkParameterizedTypes(CompilationUnitScope.java:206)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:275)
...
    at org.eclipse.jdt.internal.codeassist.impl.Engine.accept(Engine.java:93)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:134)
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:178)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:2394)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2132)
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.internalResolveType(ParameterizedSingleTypeReference.java:98)
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.resolveType(ParameterizedSingleTypeReference.java:222)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:114)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1123)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperInterfaces(ClassScope.java:917)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:963)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:290)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:274)
    at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:681)
    at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:155)
    at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:340)
    at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:334)
    at org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getHoverInfo(AbstractJavaEditorTextHover.java:117)
    at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo(BestMatchHover.java:102)
    at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo(JavaEditorTextHoverProxy.java:69)
    at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:165)
Comment 6 Kent Johnson CLA 2008-04-17 11:18:55 EDT
Created attachment 96451 [details]
Proposed patch

Using Bjoern's workspace I was able to reproduce this walkback.

It only appears in code assist and reconcile operations.
Comment 7 Kent Johnson CLA 2008-04-17 11:24:08 EDT
Reduced his code to this fun example, trying hovering over Z in the interface X:

public interface C<T extends U<? extends C<?>>> {}

public interface N<T extends O<? extends N<?>>> {}

public interface O<T extends N<? extends O<?>>> {}

public interface U<T extends C<? extends U<?>>> {}

public interface X<
	T1  extends Y<?, ?, ?>,
	T2 extends Z<?, ?, ?>
> extends  O<T1> , U<T2> {}

public interface Y<
	T1 extends Y<?, ?, ?>,
	T2 extends Z<?, ?, ?>,
	T3 extends X<?, ?>
> extends X<T1, T2>, N<T3> {}

public interface Z<
	T1 extends Y<?, ?, ?>,
	T2 extends Z<?, ?, ?>,
	T3 extends X<?, ?>
>extends X<T1, T2>, C<T3> {}
Comment 8 Kent Johnson CLA 2008-04-17 11:26:57 EDT
Released fix into HEAD for 3.4M7
Comment 9 Kent Johnson CLA 2008-04-18 11:18:23 EDT
Backported to 3.3 maintenance branch

Released for 3.4M7
Comment 10 Kent Johnson CLA 2008-04-21 13:39:41 EDT
Created attachment 96896 [details]
Testcase

Released testcase
Comment 11 Kent Johnson CLA 2008-04-22 14:39:54 EDT
*** Bug 196920 has been marked as a duplicate of this bug. ***
Comment 12 David Audel CLA 2008-04-28 11:11:51 EDT
Verified for 3.4M7 using I20080427-2000