Summary: | NPE while computing a key for a paramterized type binding | ||
---|---|---|---|
Product: | [Eclipse Project] JDT | Reporter: | Dirk Baeumer <dirk_baeumer> |
Component: | Core | Assignee: | Jerome Lanneluc <jerome_lanneluc> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P3 | CC: | markus.kell.r |
Version: | 3.1 | ||
Target Milestone: | 3.1 RC2 | ||
Hardware: | PC | ||
OS: | Windows XP | ||
Whiteboard: |
Description
Dirk Baeumer
2005-06-06 06:49:15 EDT
Hopefully these should be resolved along with fix for bug 97108. Pls verify any steps to reproduce ? I ran Infer type arguments on an older version of jdt.core. I can rerun it if you want to debug it or I can zip up the sources. +1 for RC2 Could not find a better test case than Infer Generic Type Arguments on the whole project org.eclipse.jdt.core v_560. Fix (by Philippe) is in LookupEnvironment#getTypeFromTypeSignature(...) Verified in N20050606-0010 + JDT/Core HEAD Reopening. To reproduce with jdt/core and ui from HEAD, run "Infer Generic Type Arguments" on this class: import java.util.*; abstract class MyMap implements Map { public Set entrySet() { return toHashMap().entrySet(); } private HashMap toHashMap() { return null; } } The ASTView seems to follow another code path: - set the caret into the invocation of entrySet() - expand > method binding: HashMap.entrySet() Now, the exception looks a bit different: Error 2005-06-07 20:15:31.370 java.lang.NullPointerException java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.genericTypeSignature(ParameterizedTypeBinding.java:307) at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.genericTypeSignature(ParameterizedTypeBinding.java:318) at org.eclipse.jdt.internal.compiler.lookup.MethodBinding.genericSignature(MethodBinding.java:374) 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.Binding.computeUniqueKey(Binding.java:45) at org.eclipse.jdt.core.dom.MethodBinding.getKey(MethodBinding.java:267) 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:1840) 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.handleTreeExpand(AbstractTreeViewer.java:948) at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:959) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:844) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:868) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:853) at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:3703) at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:3567) at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:1035) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3088) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3557) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1577) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:219) at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:2814) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3070) at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:2390) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3557) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1653) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2564) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1717) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1681) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:366) 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:375) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:162) 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:334) at org.eclipse.core.launcher.Main.basicRun(Main.java:278) at org.eclipse.core.launcher.Main.run(Main.java:973) at org.eclipse.core.launcher.Main.main(Main.java:948) Both test cases (refactoring and using the AST view) work for me with org.eclipse.jdt.core HEAD. Are you certain you patched correctly ? Oops, sorry about that. I was tricked by the synchronize view and did not update LookupEnvironment. Verified (again) in N20050608-0010. Actually you gave us a smaller test case. Thanks ! Added regression test ASTConverter15Test#test189() Verified for 3.1 RC2 using build I20050610-0010 Note that it works with RC1 |