Bug 107004 - NPE in TypeBinding.getKey()
Summary: NPE in TypeBinding.getKey()
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.2 M3   Edit
Assignee: Kent Johnson CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-08-15 06:10 EDT by Markus Keller CLA
Modified: 2005-10-28 14:00 EDT (History)
0 users

See Also:


Attachments
Proposed fix (758 bytes, patch)
2005-08-15 10:53 EDT, Olivier Thomann CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Keller CLA 2005-08-15 06:10:29 EDT
I20050811-1530

- open this class in a java editor:

package override.test;
public class A {
	<T, U extends T> void m(T t, U u) { }
}
class B extends A {
//	@Override
	<X, Y extends X> void m(X t, U u) { }
}

- open ASTView and focus on the 'X' in 'Y extends X'
- boom:
Error 2005-08-15 12:04:56.18 Could not set AST view input
org.eclipse.core.runtime.CoreException[4]: java.lang.NullPointerException
at
org.eclipse.jdt.internal.compiler.lookup.MethodBinding.genericSignature(MethodBinding.java:370)
at
org.eclipse.jdt.internal.compiler.lookup.MethodBinding.computeUniqueKey(MethodBinding.java:321)
at
org.eclipse.jdt.internal.compiler.lookup.MethodBinding.computeUniqueKey(MethodBinding.java:310)
at
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.computeUniqueKey(TypeVariableBinding.java:250)
at
org.eclipse.jdt.internal.compiler.lookup.Binding.computeUniqueKey(Binding.java:45)
at org.eclipse.jdt.core.dom.TypeBinding.getKey(TypeBinding.java:455)
at org.eclipse.jdt.astview.views.Binding.getChildren(Binding.java:75)
at
org.eclipse.jdt.astview.views.ASTViewContentProvider.getChildren(ASTViewContentProvider.java:92)
at
org.eclipse.jdt.astview.views.ASTViewContentProvider.hasChildren(ASTViewContentProvider.java:230)
at
org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:1378)
at
org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:1845)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:536)
at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:514)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:494)
at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1076)
at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1073)
at
org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:1613)
at
org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1494)
at
org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1450)
at org.eclipse.jdt.astview.views.ASTView.internalSetInput(ASTView.java:499)
at org.eclipse.jdt.astview.views.ASTView.setInput(ASTView.java:470)
at org.eclipse.jdt.astview.views.ASTView.performSetFocus(ASTView.java:1070)
at org.eclipse.jdt.astview.views.ASTView$15.run(ASTView.java:833)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:538)
at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
at
org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:441)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:868)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3137)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2765)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1734)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1698)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:338)
at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
at org.eclipse.core.launcher.Main.run(Main.java:977)
at org.eclipse.core.launcher.Main.main(Main.java:952)
Comment 1 Olivier Thomann CLA 2005-08-15 10:42:07 EDT
Hi Kent,

This is another example where the parameters can contain null.
See bug 106755 for the other case. They might be duplicates.
Comment 2 Olivier Thomann CLA 2005-08-15 10:53:51 EDT
Created attachment 26107 [details]
Proposed fix

Kent, resetting the parameters collection to NoParameters fixes the issue in
case of error while resolving the parameters.
Needs to be reviewed.
Comment 3 Kent Johnson CLA 2005-09-26 15:34:45 EDT
Released changes to HEAD.
Comment 4 Olivier Thomann CLA 2005-10-28 14:00:26 EDT
The key is returned and it is KEY:
'Loverride/test/A~B;.m<X:Ljava/lang/Object;Y:TX;>(TX;TY;)V:TX;'.
I renamed U in Y in the second m method.

Verified for 3.2 M3 using build I20051025-0800+JDT/Core v_618a