Bug 99927 - NPE in ParameterizedTypeBinding.initialize
Summary: NPE in ParameterizedTypeBinding.initialize
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Linux-GTK
: P3 normal (vote)
Target Milestone: 3.1 RC3   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-06-14 06:46 EDT by Tom Hofmann CLA
Modified: 2005-06-16 14:00 EDT (History)
1 user (show)

See Also:


Attachments
Fix in BindingKeyResolver (2.17 KB, patch)
2005-06-15 04:16 EDT, Jerome Lanneluc CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Tom Hofmann CLA 2005-06-14 06:46:04 EDT
3.1-RC2 test pass

- have the code below
- enable Java>Editor>Code Assist>Fill argument names
- invoke code assist at the caret (|)

import java.util.ArrayList;

class Bug {
	void m(Class<?> clazz) {
		clazz.asSubclass(ArrayL|);
	}
}

- get this:

!ENTRY org.eclipse.ui 4 4 2005-06-14 12:42:45.451
!MESSAGE "Content Assist" did not complete normally.  Please see the log for
more information.
"Content Assist" did not complete normally.  Please see the log for more
information.
Reason:

!ENTRY org.eclipse.ui 4 0 2005-06-14 12:42:45.452
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
	at
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.initialize(ParameterizedTypeBinding.java:545)
	at
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.<init>(ParameterizedTypeBinding.java:38)
	at
org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createParameterizedType(LookupEnvironment.java:554)
	at
org.eclipse.jdt.internal.core.util.BindingKeyResolver.consumeParameterizedType(BindingKeyResolver.java:279)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parseParameterizedType(BindingKeyParser.java:759)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parse(BindingKeyParser.java:571)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parse(BindingKeyParser.java:540)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parseTypeWithCapture(BindingKeyParser.java:797)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parse(BindingKeyParser.java:606)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parse(BindingKeyParser.java:540)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parseTypeArgument(BindingKeyParser.java:790)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parseParameterizedType(BindingKeyParser.java:754)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parse(BindingKeyParser.java:571)
	at
org.eclipse.jdt.internal.core.util.BindingKeyParser.parse(BindingKeyParser.java:540)
	at
org.eclipse.jdt.internal.core.util.BindingKeyResolver.getCompilerBinding(BindingKeyResolver.java:439)
	at
org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:729)
	at
org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:455)
	at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:664)
	at
org.eclipse.jdt.internal.ui.text.java.GenericJavaTypeProposal.getExpectedType(GenericJavaTypeProposal.java:609)
	at
org.eclipse.jdt.internal.ui.text.java.GenericJavaTypeProposal.computeTypeArgumentProposals(GenericJavaTypeProposal.java:314)
	at
org.eclipse.jdt.internal.ui.text.java.GenericJavaTypeProposal.apply(GenericJavaTypeProposal.java:225)
	at
org.eclipse.jdt.internal.ui.text.java.LazyJavaCompletionProposal.apply(LazyJavaCompletionProposal.java:320)
	at
org.eclipse.jface.text.contentassist.CompletionProposalPopup.insertProposal(CompletionProposalPopup.java:452)
	at
org.eclipse.jface.text.contentassist.CompletionProposalPopup.completeCommonPrefix(CompletionProposalPopup.java:1102)
	at
org.eclipse.jface.text.contentassist.CompletionProposalPopup.incrementalComplete(CompletionProposalPopup.java:1046)
	at
org.eclipse.jface.text.contentassist.ContentAssistant.showPossibleCompletions(ContentAssistant.java:1351)
	at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer.doOperation(CompilationUnitEditor.java:188)
	at org.eclipse.ui.texteditor.ContentAssistAction$1.run(ContentAssistAction.java:82)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
	at org.eclipse.ui.texteditor.ContentAssistAction.run(ContentAssistAction.java:80)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
	at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:182)
	at
org.eclipse.ui.internal.handlers.LegacyHandlerWrapper.execute(LegacyHandlerWrapper.java:108)
	at org.eclipse.core.commands.Command.execute(Command.java:311)
	at
org.eclipse.core.commands.ParameterizedCommand.execute(ParameterizedCommand.java:396)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:459)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:781)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:828)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:550)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:493)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:117)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1211)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1020)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1045)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1030)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1057)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:621)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:1961)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:560)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1359)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3386)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:4759)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1026)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1149)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2528)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1716)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1680)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:365)
	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: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)
Comment 1 Jerome Lanneluc CLA 2005-06-15 04:16:06 EDT
Created attachment 23134 [details]
Fix in BindingKeyResolver

Problem was that the outerMostResolver's parsed unit was not necessarily
non-null. Changed BindingKeyResolver to use the outerMostParsedUnit instead.
Comment 2 Philipe Mulet CLA 2005-06-15 07:41:05 EDT
+1 for RC3

Dani - pls cast your vote
Comment 3 Dani Megert CLA 2005-06-15 07:45:10 EDT
looks good.
+1 for 3.1 RC3.
Comment 4 Jerome Lanneluc CLA 2005-06-15 09:01:07 EDT
Thanks Dani.
Fix released.
Need to write a regression test for this one.
Comment 5 Olivier Thomann CLA 2005-06-16 14:00:49 EDT
Verified using N20050616-0010 + JDT/Core HEAD