Bug 74669 - [1.5] NullPointerException during save and compile
Summary: [1.5] NullPointerException during save and compile
Status: VERIFIED FIXED
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.1 M3   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-09-22 14:21 EDT by jennifer.mendrys@embarcadero.com CLA
Modified: 2004-11-04 07:00 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jennifer.mendrys@embarcadero.com CLA 2004-09-22 14:21:06 EDT
We are porting over some java code that compiled and ran successfully under the 
JSR prototype compiler.

When changing and saving the following code with "cheetah", I get a save error 
as well as an Internal compiler error.

The code looks like:

public interface IMyInterface {
}
public class MyClass <Type> {

	public static <Type> Type myMethod(Object obj, Class type) {
	    Object currObj = obj;
            Type ret = null;
            if (currObj != null)
            {
            }
            return null;
	}
}
/* This is the class that will not save or compile */
public class MyOtherClass {
    public IMyInterface getThis()
    {
	return MyClass.myMethod(this, IMyInterface.class);
    }
}

The .log file looks like:


!ENTRY org.eclipse.jdt.core 4 4 Sep 22, 2004 11:59:58.53
!MESSAGE Exception occurred during problem detection: 
!STACK 0
java.lang.NullPointerException
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.collectSubstit
utes(ParameterizedTypeBinding.java:56)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding.compu
teCompatibleMethod(ParameterizedGenericMethodBinding.java:72)
	at 
org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod
(Scope.java:106)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod
(Scope.java:780)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod
(Scope.java:1690)
	at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType
(MessageSend.java:285)
	at org.eclipse.jdt.internal.compiler.ast.Expression.resolve
(Expression.java:449)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatement
s(AbstractMethodDeclaration.java:395)
	at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements
(MethodDeclaration.java:134)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve
(AbstractMethodDeclaration.java:373)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:920)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:969)
	at 
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve
(CompilationUnitDeclaration.java:280)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:564)
	at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process
(CompilationUnitProblemFinder.java:176)
	at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure
(CompilationUnit.java:146)
	at org.eclipse.jdt.internal.core.Openable.generateInfos
(Openable.java:183)
	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed
(JavaElement.java:572)
	at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent
(CompilationUnit.java:971)
	at 
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation
(ReconcileWorkingCopyOperation.java:58)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run
(JavaModelOperation.java:700)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation
(JavaModelOperation.java:739)
	at org.eclipse.jdt.internal.core.CompilationUnit.reconcile
(CompilationUnit.java:1097)
	at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:88)
	at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:129)
	at 
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile
(CompositeReconcilingStrategy.java:86)
	at 
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile
(JavaCompositeReconcilingStrategy.java:96)
	at org.eclipse.jface.text.reconciler.MonoReconciler.process
(MonoReconciler.java:75)
	at org.eclipse.jdt.internal.ui.text.JavaReconciler.process
(JavaReconciler.java:315)
	at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:204)

!ENTRY org.eclipse.jdt.core 4 4 Sep 22, 2004 12:00:00.568
!MESSAGE Exception occurred during problem detection: 
!STACK 0
java.lang.NullPointerException
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.collectSubstit
utes(ParameterizedTypeBinding.java:56)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding.compu
teCompatibleMethod(ParameterizedGenericMethodBinding.java:72)
	at 
org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod
(Scope.java:106)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod
(Scope.java:780)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod
(Scope.java:1690)
	at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType
(MessageSend.java:285)
	at org.eclipse.jdt.internal.compiler.ast.ReturnStatement.resolve
(ReturnStatement.java:214)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatement
s(AbstractMethodDeclaration.java:395)
	at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements
(MethodDeclaration.java:134)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve
(AbstractMethodDeclaration.java:373)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:920)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:969)
	at 
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve
(CompilationUnitDeclaration.java:280)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:564)
	at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process
(CompilationUnitProblemFinder.java:176)
	at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure
(CompilationUnit.java:146)
	at org.eclipse.jdt.internal.core.Openable.generateInfos
(Openable.java:183)
	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed
(JavaElement.java:572)
	at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent
(CompilationUnit.java:971)
	at 
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation
(ReconcileWorkingCopyOperation.java:58)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run
(JavaModelOperation.java:700)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation
(JavaModelOperation.java:739)
	at org.eclipse.jdt.internal.core.CompilationUnit.reconcile
(CompilationUnit.java:1097)
	at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:88)
	at 
org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile
(JavaReconcilingStrategy.java:129)
	at 
org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile
(CompositeReconcilingStrategy.java:86)
	at 
org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile
(JavaCompositeReconcilingStrategy.java:96)
	at org.eclipse.jface.text.reconciler.MonoReconciler.process
(MonoReconciler.java:75)
	at org.eclipse.jdt.internal.ui.text.JavaReconciler.process
(JavaReconciler.java:315)
	at 
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run
(AbstractReconciler.java:204)

!ENTRY org.eclipse.jdt.core 4 4 Sep 22, 2004 12:00:07.428
!MESSAGE Exception occurred during problem detection: 
!STACK 0
java.lang.NullPointerException
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.collectSubstit
utes(ParameterizedTypeBinding.java:56)
	at 
org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding.compu
teCompatibleMethod(ParameterizedGenericMethodBinding.java:72)
	at 
org.eclipse.jdt.internal.compiler.lookup.Scope.computeCompatibleMethod
(Scope.java:106)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod
(Scope.java:780)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod
(Scope.java:1690)
	at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType
(MessageSend.java:285)
	at org.eclipse.jdt.internal.compiler.ast.ReturnStatement.resolve
(ReturnStatement.java:214)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatement
s(AbstractMethodDeclaration.java:395)
	at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements
(MethodDeclaration.java:134)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve
(AbstractMethodDeclaration.java:373)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:920)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:969)
	at 
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve
(CompilationUnitDeclaration.java:280)
	at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:564)
	at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process
(CompilationUnitProblemFinder.java:176)
	at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure
(CompilationUnit.java:146)
	at org.eclipse.jdt.internal.core.Openable.generateInfos
(Openable.java:183)
	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed
(JavaElement.java:572)
	at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent
(CompilationUnit.java:976)
	at 
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation
(ReconcileWorkingCopyOperation.java:58)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run
(JavaModelOperation.java:700)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation
(JavaModelOperation.java:739)
	at org.eclipse.jdt.internal.core.CompilationUnit.reconcile
(CompilationUnit.java:1097)
	at org.eclipse.jdt.internal.core.CompilationUnit.reconcile
(CompilationUnit.java:1060)
	at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.commitWor
kingCopy(CompilationUnitDocumentProvider.java:886)
	at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider$2.execute
(CompilationUnitDocumentProvider.java:951)
	at 
org.eclipse.ui.editors.text.TextFileDocumentProvider$DocumentProviderOperation.r
un(TextFileDocumentProvider.java:126)
	at org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation.execute
(WorkspaceModifyDelegatingOperation.java:67)
	at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run
(WorkspaceModifyOperation.java:91)
	at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1673)
	at org.eclipse.ui.actions.WorkspaceModifyOperation.run
(WorkspaceModifyOperation.java:105)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run
(WorkspaceOperationRunner.java:73)
	at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run
(WorkspaceOperationRunner.java:63)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation
(TextFileDocumentProvider.java:440)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.saveDocument
(TextFileDocumentProvider.java:699)
	at org.eclipse.ui.texteditor.AbstractTextEditor.performSave
(AbstractTextEditor.java:3535)
	at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSave
(CompilationUnitEditor.java:1357)
	at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave
(CompilationUnitEditor.java:1410)
	at org.eclipse.ui.internal.EditorManager$12.run(EditorManager.java:1160)
	at org.eclipse.ui.internal.EditorManager$10.run(EditorManager.java:1015)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread
(ModalContext.java:303)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:253)
	at org.eclipse.jface.window.ApplicationWindow$1.run
(ApplicationWindow.java:588)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
	at org.eclipse.jface.window.ApplicationWindow.run
(ApplicationWindow.java:585)
	at org.eclipse.ui.internal.WorkbenchWindow.run
(WorkbenchWindow.java:1653)
	at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation
(EditorManager.java:1021)
	at org.eclipse.ui.internal.EditorManager.savePart
(EditorManager.java:1165)
	at org.eclipse.ui.internal.WorkbenchPage.savePart
(WorkbenchPage.java:2539)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor
(WorkbenchPage.java:2551)
	at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:69)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:881)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection
(ActionContributionItem.java:915)
	at org.eclipse.jface.action.ActionContributionItem.access$2
(ActionContributionItem.java:866)
	at org.eclipse.jface.action.ActionContributionItem$8.handleEvent
(ActionContributionItem.java:824)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2772)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2431)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1377)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1348)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench
(Workbench.java:254)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141)
	at org.eclipse.ui.internal.ide.IDEApplication.run
(IDEApplication.java:96)
	at org.eclipse.core.internal.runtime.PlatformActivator$1.run
(PlatformActivator.java:335)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:273)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:129)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:183)
	at org.eclipse.core.launcher.Main.run(Main.java:644)
	at org.eclipse.core.launcher.Main.main(Main.java:628)
Comment 1 Kent Johnson CLA 2004-09-22 16:30:58 EDT
Please switch to use the latest 3.1 milestone, which contains our latest work 
on Java 5.
Comment 2 jennifer.mendrys@embarcadero.com CLA 2004-09-22 18:03:45 EDT
We are also trying to use "cheetah" and it is my understanding that this will 
only work with 3.0.

If I upgrade to 3.1 will I have to forego using cheetah?  When is the eta on 
getting cheetah compliant with 3.1?  Or is that necessary?
Comment 3 Philipe Mulet CLA 2004-09-22 18:21:48 EDT
The cheetah got integrated into Eclipse 3.1 deliveries. You no longer need the 
separate update, which isn't evolving anymore (as the cheetah now lives in 3.1 
stream directly).
Comment 4 jennifer.mendrys@embarcadero.com CLA 2004-09-22 18:52:01 EDT
Ok.  Thanks.  Another question.  With 3.0 and cheetah, we were able to set our 
Compiler->Compliance and Classfiles to:
compiler compliance level: 1.5
generated .class files compatability: 1.4
source compatability: 1.5

which allowed us to use the benefits of 1.5 for writing code, but generated our 
application at 1.4 levels.

I am noticing that this is not the case in 3.1.  If I set the compliance level 
to 1.5, I cannot set the .class file compatability to 1.4.

Is this no longer an option?  We were thinking that our app would ship about 
the time that 1.5 is officially released, and we didn't want to make our 
customers dependent on 1.5 installation.

What would our options be?
Comment 5 Philipe Mulet CLA 2004-09-23 03:40:03 EDT
We never supported 1.5 source -> 1.4 target in our implementation. The 
preference page was simply broken, and allowed this mode to occur. This being 
said, were you able to deploy successfully 1.5 code on 1.4 target ?
Comment 6 Philipe Mulet CLA 2004-09-29 09:57:26 EDT
Lowering severity
Comment 7 Philipe Mulet CLA 2004-10-26 17:07:16 EDT
No more NPE in latest, but still issue with static generic method from raw type.
Looks like static generic methods need to be treated differently from non-static
generic ones on raw types.
Tuned implementation, added regression test: GenericTypeTest#test336

Note: if #myMethod was made non-static, it would issue a compile error.
Comment 8 Philipe Mulet CLA 2004-10-26 17:08:17 EDT
Fixed
Comment 9 David Audel CLA 2004-11-04 07:00:00 EST
Verified for 3.1M3 with build I200411040100