Community
Participate
Working Groups
Build ID: I20080617-2000 Steps To Reproduce: org.eclipse.jdt.internal.core.JavaElement.java:381 try to cast (IField)child inside do/while, and, at the same time, reassigns 'child' in this do/while without further checking 'child instanceof IField'. This code fragment is definitely invalid. It rises CCE at some situations. More information: For example, see http://www.nabble.com/-scala-tools--Eclipse-plugin%2C-floating-exception-td19584578.html
The stack trace is: ClassCastException: scala.tools.eclipse.javaelements.ScalaDefElement cannot be cast to org.eclipse.jdt.core.IField at org.eclipse.jdt.internal.core.JavaElement.getSourceElementAt(JavaElement.java:381) at org.eclipse.jdt.internal.core.JavaElement.getSourceElementAt(JavaElement.java:392) at org.eclipse.jdt.internal.core.CompilationUnit.getElementAt(CompilationUnit.java:687) at scala.tools.eclipse.Editor.getElementAt(Editor.scala:54) at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.computeHighlightRangeSourceReference(JavaEditor.java:3823) at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.showBreadcrumb(JavaEditor.java:1879) at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.createPartControl(JavaEditor.java:3043) at scala.tools.eclipse.Editor.createPartControl(Editor.scala:78) at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:661) at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:428) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:594) at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:266) at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2820) at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2729) at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2721) at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2673) at org.eclipse.swt.custom.BusyIndicator.showWhile(Unknown Source) at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668) at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2652) at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2643) at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:331) at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:194) at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:144) at org.eclipse.jdt.internal.ui.javaeditor.JavaEditorBreadcrumb.openInNewEditor(JavaEditorBreadcrumb.java:718) at org.eclipse.jdt.internal.ui.javaeditor.JavaEditorBreadcrumb.open(JavaEditorBreadcrumb.java:689) at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.EditorBreadcrumb.doOpen(EditorBreadcrumb.java:355) at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.EditorBreadcrumb.doRevealOrOpen(EditorBreadcrumb.java:336) at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.EditorBreadcrumb.access$8(EditorBreadcrumb.java:333) at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.EditorBreadcrumb$3.open(EditorBreadcrumb.java:254) at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:820) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.runtime.Platform.run(Platform.java:880) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:818) at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.BreadcrumbViewer.fireMenuSelection(BreadcrumbViewer.java:538) at org.eclipse.jdt.internal.ui.javaeditor.breadcrumb.BreadcrumbItemDropDown$3.mouseUp(BreadcrumbItemDropDown.java:341) at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source) at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source) at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source) at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source) at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 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:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1236) at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
According to this stack trace, SourceRefElement is extended by ScalaDefElement. SourceRefElement is an internal class. It is not allowed to extend internal classes. Won't fix.
Verified for 3.5M4