Bug 234172

Summary: [1.5][select] no hover in qualified name with generics
Product: [Eclipse Project] JDT Reporter: Philipe Mulet <philippe_mulet>
Component: CoreAssignee: Jerome Lanneluc <jerome_lanneluc>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: david_audel, Olivier_Thomann
Version: 3.4   
Target Milestone: 3.4.1   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Proposed fix and regression test none

Description Philipe Mulet CLA 2008-05-27 11:04:09 EDT
Build 3.4rc2

In following code, the hover will not appear when mouse is over 'value' in 'b.value.next' qualified name. Hover does appear in either leading 'b' or trailing 'next' in same expression.

Steps: hover on this line:
    b.value.next = new Box<B, B>(new B()); // error
in 'value' part of left-hande side.

----------------------
public class X {
	public static void main(String[] args) {
		Box<Box<A, A>, Box<A, A>> a = new Box<Box<A, A>, Box<A, A>>(new Box<A, A>(new A()));
		Box<?, ?> b = a;
		b.value.next = new Box<B, B>(new B()); // error
		A c = a.value.next.value;
	}
}

class Box<U extends Box<?, ?>, V extends U> {
	V value;
	Box<U, V> next;
	Box(V v) {
		this.value = v;
	}
	Box() {
	}
}

class A extends Box<A, A> {
}
class B extends Box<B, B> {
}


Note that F3 did work fine.
Comment 1 David Audel CLA 2008-05-29 04:38:31 EDT
The conversion from the binding key given by code select to a signature fails. When JavaElementLabels try to use the broken signature an IllegalArgumentException occurs.

java.lang.IllegalArgumentException
	at org.eclipse.jdt.core.Signature.getTypeSignatureKind(Signature.java:1135)
	at org.eclipse.jdt.ui.JavaElementLabels.getTypeSignatureLabel(JavaElementLabels.java:988)
	at org.eclipse.jdt.ui.JavaElementLabels.getFieldLabel(JavaElementLabels.java:848)
	at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:523)
	at org.eclipse.jdt.ui.JavaElementLabels.getStyledElementLabel(JavaElementLabels.java:483)
	at org.eclipse.jdt.ui.JavaElementLabels.getStyledTextLabel(JavaElementLabels.java:417)
	at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:469)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getInfoText(JavadocHover.java:613)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:548)
	at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:509)
Comment 2 Jerome Lanneluc CLA 2008-05-29 11:41:16 EDT
Created attachment 102667 [details]
Proposed fix and regression test
Comment 3 Jerome Lanneluc CLA 2008-05-29 11:42:14 EDT
Since this is not a regression comparing to 3.3.2, targeting 3.5 and with possible backport to 3.4.1
Comment 4 Philipe Mulet CLA 2008-05-29 12:28:07 EDT
Fix in 3.4.1 would be nice... since we see 1.5 adoption becoming significant.
Comment 5 Jerome Lanneluc CLA 2008-06-24 07:17:11 EDT
Fix and test released for 3.5M1
Comment 6 Jerome Lanneluc CLA 2008-06-24 10:44:36 EDT
Fix and test released for 3.4.1
Comment 7 Olivier Thomann CLA 2008-08-06 14:09:26 EDT
Verified for 3.5M1 using I20080805-1307
Comment 8 Frederic Fusier CLA 2008-08-28 12:26:21 EDT
Verified for 3.4.1 using build M20080827-2000.