Community
Participate
Working Groups
200411170800 + jdt.core & ui from HEAD Found this in the log of my run-time workbench. Sorry, no steps. Error 2004-11-23 10:28:01.892 Problems occurred when invoking code from plug-in: "org.eclipse.core.runtime". java.lang.ClassCastException at org.eclipse.jdt.internal.compiler.SourceElementParser.notifySourceElementRequestor(SourceElementParser.java:1095) at org.eclipse.jdt.internal.compiler.SourceElementParser.notifySourceElementRequestor(SourceElementParser.java:1432) at org.eclipse.jdt.internal.compiler.SourceElementParser.notifySourceElementRequestor(SourceElementParser.java:919) at org.eclipse.jdt.internal.compiler.SourceElementParser.parseCompilationUnit(SourceElementParser.java:1528) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:116) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:203) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:553) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:291) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:277) at org.eclipse.jdt.internal.core.JavaElementDeltaBuilder.recordNewPositions(JavaElementDeltaBuilder.java:370) at org.eclipse.jdt.internal.core.JavaElementDeltaBuilder.buildDeltas(JavaElementDeltaBuilder.java:135) at org.eclipse.jdt.internal.core.JavaModelManager.discardPerWorkingCopyInfo(JavaModelManager.java:799) at org.eclipse.jdt.internal.core.DiscardWorkingCopyOperation.executeOperation(DiscardWorkingCopyOperation.java:29) 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.discardWorkingCopy(CompilationUnit.java:414) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.disposeFileInfo(CompilationUnitDocumentProvider.java:883) at org.eclipse.ui.editors.text.TextFileDocumentProvider.disconnect(TextFileDocumentProvider.java:582) at org.eclipse.ui.texteditor.AbstractTextEditor.disposeDocumentProvider(AbstractTextEditor.java:3086) at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.disposeDocumentProvider(AbstractDecoratedTextEditor.java:1122) at org.eclipse.ui.texteditor.AbstractTextEditor.dispose(AbstractTextEditor.java:3005) at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.dispose(AbstractDecoratedTextEditor.java:221) at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.dispose(JavaEditor.java:3121) at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.dispose(CompilationUnitEditor.java:1601) at org.eclipse.ui.internal.WorkbenchPartReference.dispose(WorkbenchPartReference.java:404) at org.eclipse.ui.internal.EditorManager$Editor.dispose(EditorManager.java:1548) at org.eclipse.ui.internal.WorkbenchPage$5.run(WorkbenchPage.java:1244) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:616) at org.eclipse.core.runtime.Platform.run(Platform.java:747) at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1242) at org.eclipse.ui.internal.WorkbenchPage.closeEditors(WorkbenchPage.java:951) at org.eclipse.ui.internal.WorkbenchPage.closeAllEditors(WorkbenchPage.java:891) at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1263) at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:653) at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1189) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:542) at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:523) at org.eclipse.ui.internal.WorkbenchWindow$1.run(WorkbenchWindow.java:618) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:616) at org.eclipse.jface.window.WindowManager.close(WindowManager.java:108) at org.eclipse.ui.internal.Workbench$10.run(Workbench.java:498) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:616) at org.eclipse.core.runtime.Platform.run(Platform.java:747) at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:494) at org.eclipse.ui.internal.Workbench.access$8(Workbench.java:429) at org.eclipse.ui.internal.Workbench$12.run(Workbench.java:614) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.Workbench.close(Workbench.java:612) at org.eclipse.ui.internal.Workbench.close(Workbench.java:587) at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:539) at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:523) at org.eclipse.ui.internal.WorkbenchWindow$1.run(WorkbenchWindow.java:618) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:616) at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:637) at org.eclipse.jface.window.Window$2.shellClosed(Window.java:584) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:158) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:818) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:842) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:827) at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:242) at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1518) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2949) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1463) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3370) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1509) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:399) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3029) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1463) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3370) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1509) at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:399) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3029) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1463) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3370) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1514) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2446) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1573) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1544) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:279) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:220) 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(NativeMethodAccessorImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60) at java.lang.reflect.Method.invoke(Method.java:391) at org.eclipse.core.launcher.Main.basicRun(Main.java:185) at org.eclipse.core.launcher.Main.run(Main.java:710) at org.eclipse.core.launcher.Main.main(Main.java:694)
I will investigate.
I could not reproduce. I fixed the possible class cast exception. Code is released. Reopen if you see it again.
Bug was to cast an AbstractMethodDeclaration into an AnnotationMethodDeclaration if it was not an instanceof MethodDeclaration (when computing the return type). This would always cause a ClassCastException for Clinit and ConstructorDeclaration. Verified (in I20041214-2000) that the fix consists in returning null for the return type of Clinit and ConstructorDeclaration.