Bug 79263 - ClassCastException in SourceElementParser
Summary: ClassCastException in SourceElementParser
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.1 M4   Edit
Assignee: Olivier Thomann CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-11-23 05:07 EST by Markus Keller CLA
Modified: 2004-12-15 07:06 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 Markus Keller CLA 2004-11-23 05:07:03 EST
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)
Comment 1 Olivier Thomann CLA 2004-11-23 16:07:35 EST
I will investigate.
Comment 2 Olivier Thomann CLA 2004-11-25 14:40:02 EST
I could not reproduce.
I fixed the possible class cast exception. Code is released.
Reopen if you see it again.
Comment 3 Jerome Lanneluc CLA 2004-12-15 07:06:37 EST
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.