Community
Participate
Working Groups
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.
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 ...
Changed CompilationUnitProblemFinder to log runtime exceptions, and convert them in JavaModelException (with compiler failure status). Fixed
Verified.