Community
Participate
Working Groups
I20050617-0010 Open an editor on Class$MethodArray.class from an 1.5 JRE and look at the type bindings in the ASTView. All type binding keys of elements from the same source file are prefixed with "Ljava/lang/Class$MethodArray~", e.g. the declaration class Class<T> implements .. has KEY: 'Ljava/lang/Class$MethodArray~Class<TT;>;' I would expect that the binding keys are the same as when requested from an AST on Class.class. I guess this is the reason for other strange effects e.g. the exception below, which happens in the java element label calculation when I expand the node > method binding: MethodArray.add(Method) in the AST on Class$MethodArray.class. I don't think this is critical for 3.2, since I guess we rarely (never?) create ASTs on class files for other reasons than semantic highlighting. Error 2005-06-17 11:54:20.801 Problems occurred when invoking code from plug-in: "org.eclipse.jface". java.lang.IllegalArgumentException at org.eclipse.jdt.core.Signature.getParameterCount(Signature.java:981) at org.eclipse.jdt.core.Signature.getParameterTypes(Signature.java:1155) at org.eclipse.jdt.core.Signature.getParameterTypes(Signature.java:1194) at org.eclipse.jdt.ui.JavaElementLabels.getMethodLabel(JavaElementLabels.java:490) at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:386) at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:363) at org.eclipse.jdt.astview.views.JavaElement.getLabel(JavaElement.java:55) at org.eclipse.jdt.astview.views.ASTViewLabelProvider.getText(ASTViewLabelProvider.java:66) at org.eclipse.jface.viewers.StructuredViewer.buildLabel(StructuredViewer.java:1877) at org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java:231) at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:85) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044) at org.eclipse.core.runtime.Platform.run(Platform.java:783) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:44) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:148) at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:621) at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:434) at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044) at org.eclipse.core.runtime.Platform.run(Platform.java:783) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:44) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:148) at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:1763) at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:535) at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:514) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69) at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:494) at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:948) at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:959) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:844) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:868) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:853) at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:3704) at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:3567) at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:1035) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3088) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3694) at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1580) at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:219) at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:2815) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3070) at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:2391) at org.eclipse.swt.widgets.Display.windowProc(Display.java:3694) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1656) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2701) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163) 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:585) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334) at org.eclipse.core.launcher.Main.basicRun(Main.java:278) at org.eclipse.core.launcher.Main.run(Main.java:973) at org.eclipse.core.launcher.Main.main(Main.java:948)
SourceTypeBinding#computeUniqueKey() doesn't compute correctly 'mainTypeName'. It should be 'Class' instead of 'Class$MemberArray'. This problem can only occurs with a member type of a binary type.
Created attachment 24068 [details] Fix Changed SourceTypeBinding#computeUniqueKey(...) to not insert the openable's name in the case of a .class file.
Created attachment 24069 [details] Regression test
Released fix and regression test.
Verified in I20050920-0010 for 3.2M2