Bug 40334 - Model should be more tolerant for possible compiler failures
Summary: Model should be more tolerant for possible compiler failures
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: 3.0 M3   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-07-17 07:52 EDT by Philipe Mulet CLA
Modified: 2003-08-28 04:47 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipe Mulet CLA 2003-07-17 07:52:27 EDT
Build 20030716

If the compiler throws an internal error, it is captured into an extra problem. 
If the compiler failure arises during reconciling (with problem detection), 
then the exception is surfaced, possibly damaging all tools in the vicinity.

For instance, due to bug 40288, I couldn't open other types in editor 
correctly, since the offending original type kept throwing exceptions when the 
model was trying to populate it.
Comment 1 Philipe Mulet CLA 2003-07-17 08:05:07 EDT
Example of issues logged with steps from bug 40288, and trying to open 
NegativeTest.

java.lang.NullPointerException
        at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.recordTypeReferenc
es(Unknown Source)
        at org.eclipse.jdt.internal.compiler.lookup.Scope.findExactMethod
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.lookup.BlockScope.getImplicitMethod
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CastExpression.checkAlternateBinding
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CastExpression.checkNeedForArgumentCasts
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Unknown 
Source)
        at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatement
s(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(Unknown 
Source)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.Compiler.resolve(Unknown Source)
        at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process
(Unknown Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(Unknown 
Source)
        at org.eclipse.jdt.internal.core.Openable.generateInfos(Unknown Source)
        at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(Unknown 
Source)
        at 
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation
(Unknown Source)
        at org.eclipse.jdt.internal.core.JavaModelOperation.execute(Unknown 
Source)
        at org.eclipse.jdt.internal.core.JavaModelOperation.run(Unknown Source)
        at org.eclipse.jdt.internal.core.JavaElement.runOperation(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(Unknown 
Source)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.doSaveDoc
ument(Unknown Source)
        at org.eclipse.ui.texteditor.AbstractDocumentProvider.saveDocument
(Unknown Source)
        at org.eclipse.ui.texteditor.AbstractTextEditor$11.execute(Unknown 
Source)
        at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Unknown Source)
        at org.eclipse.core.internal.resources.Workspace.run(Unknown Source)
        at org.eclipse.ui.actions.WorkspaceModifyOperation.run(Unknown Source)
        at org.eclipse.ui.texteditor.AbstractTextEditor.performSaveOperation
(Unknown Source)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSaveOperatio
n(Unknown Source)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave
(Unknown Source)
        at org.eclipse.ui.internal.EditorManager$11.run(Unknown Source)
        at org.eclipse.ui.internal.EditorManager$8.run(Unknown Source)
        at org.eclipse.jface.operation.ModalContext.runInCurrentThread(Unknown 
Source)
        at org.eclipse.jface.operation.ModalContext.run(Unknown Source)
        at org.eclipse.jface.window.ApplicationWindow$1.run(Unknown Source)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84)
        at org.eclipse.jface.window.ApplicationWindow.run(Unknown Source)
        at org.eclipse.ui.internal.WorkbenchWindow.run(Unknown Source)
        at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation
(Unknown Source)
        at org.eclipse.ui.internal.EditorManager.savePart(Unknown Source)
        at org.eclipse.ui.internal.WorkbenchPage.savePart(Unknown Source)
        at org.eclipse.ui.internal.WorkbenchPage.saveEditor(Unknown Source)
        at org.eclipse.ui.internal.SaveAction.run(Unknown Source)
        at org.eclipse.jface.action.Action.runWithEvent(Unknown Source)
        at org.eclipse.ui.internal.commands.old.ActionHandler.execute(Unknown 
Source)
        at org.eclipse.ui.internal.commands.old.ContextAndHandlerManager.pressed
(Unknown Source)
        at 
org.eclipse.ui.internal.commands.old.ContextAndHandlerManager.access$1(Unknown 
Source)
        at 
org.eclipse.ui.internal.commands.old.ContextAndHandlerManager$7.widgetSelected
(Unknown Source)
        at org.eclipse.ui.internal.AcceleratorMenu$2.handleEvent(Unknown Source)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:848)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2188)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1878)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Unknown Source)
        at org.eclipse.ui.internal.Workbench.run(Unknown Source)
        at org.eclipse.core.internal.boot.InternalBootLoader.run(Unknown Source)
        at org.eclipse.core.boot.BootLoader.run(Unknown Source)
        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(Unknown Source)
        at org.eclipse.core.launcher.Main.run(Unknown Source)
        at org.eclipse.core.launcher.Main.main(Unknown Source)
!ENTRY org.eclipse.ui 4 4 Jul 17, 2003 13:55:19.706
!MESSAGE Save Failed
Save Failed
Reason:
!ENTRY org.eclipse.ui 2 0 Jul 17, 2003 13:55:19.722
!MESSAGE Save Failed
!STACK 0
java.lang.NullPointerException
        at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.recordTypeReferenc
es(Unknown Source)
        at org.eclipse.jdt.internal.compiler.lookup.Scope.findExactMethod
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.lookup.BlockScope.getImplicitMethod
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CastExpression.checkAlternateBinding
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CastExpression.checkNeedForArgumentCasts
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Unknown 
Source)
        at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatement
s(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(Unknown 
Source)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.Compiler.resolve(Unknown Source)
        at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process
(Unknown Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(Unknown 
Source)
        at org.eclipse.jdt.internal.core.Openable.generateInfos(Unknown Source)
        at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(Unknown 
Source)
        at 
org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation
(Unknown Source)
        at org.eclipse.jdt.internal.core.JavaModelOperation.execute(Unknown 
Source)
        at org.eclipse.jdt.internal.core.JavaModelOperation.run(Unknown Source)
        at org.eclipse.jdt.internal.core.JavaElement.runOperation(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(Unknown 
Source)
        at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(Unknown 
Source)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.doSaveDoc
ument(Unknown Source)
        at org.eclipse.ui.texteditor.AbstractDocumentProvider.saveDocument
(Unknown Source)
        at org.eclipse.ui.texteditor.AbstractTextEditor$11.execute(Unknown 
Source)
        at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(Unknown Source)
        at org.eclipse.core.internal.resources.Workspace.run(Unknown Source)
        at org.eclipse.ui.actions.WorkspaceModifyOperation.run(Unknown Source)
        at org.eclipse.ui.texteditor.AbstractTextEditor.performSaveOperation
(Unknown Source)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSaveOperatio
n(Unknown Source)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave
(Unknown Source)
        at org.eclipse.ui.internal.EditorManager$11.run(Unknown Source)
        at org.eclipse.ui.internal.EditorManager$8.run(Unknown Source)
        at org.eclipse.jface.operation.ModalContext.runInCurrentThread(Unknown 
Source)
        at org.eclipse.jface.operation.ModalContext.run(Unknown Source)
        at org.eclipse.jface.window.ApplicationWindow$1.run(Unknown Source)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84)
        at org.eclipse.jface.window.ApplicationWindow.run(Unknown Source)
        at org.eclipse.ui.internal.WorkbenchWindow.run(Unknown Source)
        at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation
(Unknown Source)
        at org.eclipse.ui.internal.EditorManager.savePart(Unknown Source)
        at org.eclipse.ui.internal.WorkbenchPage.savePart(Unknown Source)
        at org.eclipse.ui.internal.WorkbenchPage.saveEditor(Unknown Source)
        at org.eclipse.ui.internal.SaveAction.run(Unknown Source)
        at org.eclipse.jface.action.Action.runWithEvent(Unknown Source)
        at org.eclipse.ui.internal.commands.old.ActionHandler.execute(Unknown 
Source)
        at org.eclipse.ui.internal.commands.old.ContextAndHandlerManager.pressed
(Unknown Source)
        at 
org.eclipse.ui.internal.commands.old.ContextAndHandlerManager.access$1(Unknown 
Source)
        at 
org.eclipse.ui.internal.commands.old.ContextAndHandlerManager$7.widgetSelected
(Unknown Source)
        at org.eclipse.ui.internal.AcceleratorMenu$2.handleEvent(Unknown Source)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:848)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2188)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1878)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Unknown Source)
        at org.eclipse.ui.internal.Workbench.run(Unknown Source)
        at org.eclipse.core.internal.boot.InternalBootLoader.run(Unknown Source)
        at org.eclipse.core.boot.BootLoader.run(Unknown Source)
        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(Unknown Source)
        at org.eclipse.core.launcher.Main.run(Unknown Source)
        at org.eclipse.core.launcher.Main.main(Unknown Source)
Save Failed
java.lang.NullPointerException
        at 
org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.recordTypeReferenc
es(Unknown Source)
        at org.eclipse.jdt.internal.compiler.lookup.Scope.findExactMethod
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.lookup.BlockScope.getImplicitMethod
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CastExpression.checkAlternateBinding
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.CastExpression.checkNeedForArgumentCasts
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Unknown 
Source)
        at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatement
s(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements
(Unknown Source)
        at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(Unknown 
Source)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(Unknown Source)
        at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(Unknown Source)

...

lots of them ...        
Comment 2 Philipe Mulet CLA 2003-07-17 11:10:22 EDT
Changed CompilationUnitProblemFinder to log runtime exceptions, and convert 
them in JavaModelException (with compiler failure status).

Fixed
Comment 3 David Audel CLA 2003-08-28 04:47:24 EDT
Verified.