Bug 48941 - NPE during source lookup binding
Summary: NPE during source lookup binding
Status: RESOLVED WORKSFORME
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.0 M7   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-12-17 01:03 EST by Wassim Melhem CLA
Modified: 2004-01-29 06:47 EST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Wassim Melhem CLA 2003-12-17 01:03:04 EST
Build: I-20031216 (1717)

I have a Hello world plugin in my workspace.  I also have 
org.eclipse.runtime.compatibility and all its prereqs imported as binary.

I deleted org.eclipse.core.runtime.compatibility from the list of dependencies 
of the Hello world plugin and saved.

This caused compilation errors.

I double-clicked on one of the errors in the Problems view, and I got the 
following NPE:

Error Dec 17, 2003 00:58:44.872 Problems occurred when invoking code from plug-
in: "org.eclipse.core.runtime".
java.lang.NullPointerException
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.fields
(SourceTypeBinding.java:354)
at 
org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.faultInTypesForField
sAndMethods(SourceTypeBinding.java:342)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes
(CompilationUnitScope.java:350)
at org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver.resolve
(HierarchyResolver.java:666)
at org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver.resolve
(HierarchyResolver.java:495)
at org.eclipse.jdt.internal.core.hierarchy.HierarchyBuilder.buildSupertypes
(HierarchyBuilder.java:120)
at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.build
(IndexBasedHierarchyBuilder.java:133)
at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.compute
(TypeHierarchy.java:319)
at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.refresh
(TypeHierarchy.java:1230)
at org.eclipse.jdt.internal.core.CreateTypeHierarchyOperation.executeOperation
(CreateTypeHierarchyOperation.java:90)
at org.eclipse.jdt.internal.core.JavaModelOperation.execute
(JavaModelOperation.java:364)
at org.eclipse.jdt.internal.core.JavaModelOperation.run
(JavaModelOperation.java:703)
at org.eclipse.jdt.internal.core.JavaElement.runOperation(JavaElement.java:524)
at org.eclipse.jdt.internal.core.SourceType.newSupertypeHierarchy
(SourceType.java:550)
at org.eclipse.jdt.internal.core.SourceType.newSupertypeHierarchy
(SourceType.java:502)
at 
org.eclipse.jdt.internal.corext.util.SuperTypeHierarchyCache.getTypeHierarchy
(SuperTypeHierarchyCache.java:73)
at org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.getOverrideIndicators
(OverrideIndicatorLabelDecorator.java:151)
at org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.computeAdornmentFlags
(OverrideIndicatorLabelDecorator.java:121)
at org.eclipse.jdt.ui.OverrideIndicatorLabelDecorator.decorateImage
(OverrideIndicatorLabelDecorator.java:93)
at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.decorateImage
(JavaUILabelProvider.java:119)
at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getImage
(JavaUILabelProvider.java:134)
at org.eclipse.jface.viewers.DecoratingLabelProvider.getImage
(DecoratingLabelProvider.java:73)
at org.eclipse.jdt.internal.ui.viewsupport.DecoratingJavaLabelProvider.getImage
(DecoratingJavaLabelProvider.java:103)
at org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java:99)
at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run
(AbstractTreeViewer.java:87)
at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:813)
at org.eclipse.core.runtime.Platform.run(Platform.java:447)
at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem
(AbstractTreeViewer.java:469)
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run
(StructuredViewer.java:119)
at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:813)
at org.eclipse.core.runtime.Platform.run(Platform.java:447)
at org.eclipse.jface.viewers.StructuredViewer.updateItem
(StructuredViewer.java:1285)
at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem
(AbstractTreeViewer.java:383)
at org.eclipse.jface.viewers.AbstractTreeViewer$1.run
(AbstractTreeViewer.java:363)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren
(AbstractTreeViewer.java:349)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel
(AbstractTreeViewer.java:926)
at 
org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$JavaOutlineViewer.intern
alExpandToLevel(JavaOutlinePage.java:423)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel
(AbstractTreeViewer.java:935)
at 
org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$JavaOutlineViewer.intern
alExpandToLevel(JavaOutlinePage.java:423)
at org.eclipse.jface.viewers.AbstractTreeViewer$5.run
(AbstractTreeViewer.java:809)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection
(StructuredViewer.java:810)
at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged
(AbstractTreeViewer.java:798)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:238)
at org.eclipse.jface.viewers.StructuredViewer.setInput
(StructuredViewer.java:1004)
at org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage.createControl
(JavaOutlinePage.java:1056)
at org.eclipse.ui.views.contentoutline.ContentOutline.doCreatePage
(ContentOutline.java:125)
at org.eclipse.ui.part.PageBookView.createPage(PageBookView.java:306)
at org.eclipse.ui.part.PageBookView.partActivated(PageBookView.java:561)
at org.eclipse.ui.internal.PartListenerList$1.run(PartListenerList.java:49)
at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:813)
at org.eclipse.core.runtime.Platform.run(Platform.java:447)
at org.eclipse.ui.internal.PartListenerList.firePartActivated
(PartListenerList.java:47)
at org.eclipse.ui.internal.WorkbenchPage.firePartActivated
(WorkbenchPage.java:1251)
at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:2513)
at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:448)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor
(WorkbenchPage.java:2061)
at org.eclipse.ui.internal.WorkbenchPage.access$6(WorkbenchPage.java:1990)
at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:1977)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:1972)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:265)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:317)
at org.eclipse.ui.views.markers.internal.ActionOpenMarker.run
(ActionOpenMarker.java:76)
at org.eclipse.ui.views.markers.internal.MarkerView.handleOpenEvent
(MarkerView.java:422)
at org.eclipse.ui.views.markers.internal.TableView$2.open(TableView.java:162)
at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:406)
at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:813)
at org.eclipse.core.runtime.Platform.run(Platform.java:447)
at org.eclipse.jface.viewers.StructuredViewer.fireOpen
(StructuredViewer.java:404)
at org.eclipse.jface.viewers.StructuredViewer.handleOpen
(StructuredViewer.java:614)
at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen
(StructuredViewer.java:703)
at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:209)
at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:204)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:233)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2311)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1992)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1506)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1482)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:246)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:47)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run
(PlatformActivator.java:233)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:85)
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:324)
at org.eclipse.core.launcher.Main.basicRun(Main.java:281)
at org.eclipse.core.launcher.Main.run(Main.java:744)
at org.eclipse.core.launcher.Main.main(Main.java:583)
Comment 1 Kent Johnson CLA 2003-12-17 10:53:54 EST
Same issue as bug 48459.

Added protection for uninitialized fields & methods.
Comment 2 Jerome Lanneluc CLA 2004-01-08 07:40:06 EST
Kent, looking at the code it looks like we're always building field and method 
bindings in the hierarchy resolver. I don't find where we don't?
Comment 3 Kent Johnson CLA 2004-01-08 10:38:46 EST
I don't see it either.

Could containsLocalType be screwing things up?
Comment 4 Jerome Lanneluc CLA 2004-01-08 11:18:09 EST
How would containsLocalType interfer with field binding creation?
Comment 5 Kent Johnson CLA 2004-01-08 11:25:39 EST
It controls whether you parse methods or not.

Can a local type be created without first parsing its enclosing method?
Comment 6 Jerome Lanneluc CLA 2004-01-08 11:40:28 EST
No, I don't see how this would be possible.
Comment 7 Jerome Lanneluc CLA 2004-01-29 06:47:14 EST
Workaround by Kent should be enough. Closing.