Community
Participate
Working Groups
Build Identifier: 20100917-0705 Have a big workspace with a number of independent projects. Each project has Java nature, C/C++ nature and Remote C/C++ nature. I switched from the C/C++ perspective to the Java perspective, and the tab titled "Package Explorer" no package explorer is displayed. Instead the error message "Could not create the view: 4" is displayed in that tab with the following details: java.lang.ArrayIndexOutOfBoundsException: 4 at org.eclipse.jdt.internal.compiler.parser.Scanner.internalScanIdentifierOrKeyword(Scanner.java:2983) at org.eclipse.jdt.internal.compiler.parser.Scanner.scanIdentifierOrKeywordWithBoundCheck(Scanner.java:2770) at org.eclipse.jdt.internal.compiler.parser.Scanner.scanIdentifier(Scanner.java:1038) at org.eclipse.jdt.core.JavaConventions.scannedIdentifier(JavaConventions.java:82) at org.eclipse.jdt.core.JavaConventions.validateIdentifier(JavaConventions.java:312) at org.eclipse.jdt.internal.core.util.Util.isValidFolderNameForPackage(Util.java:1742) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeFolderChildren(PackageFragmentRoot.java:236) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeFolderChildren(PackageFragmentRoot.java:241) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeFolderChildren(PackageFragmentRoot.java:241) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeFolderChildren(PackageFragmentRoot.java:241) at org.eclipse.jdt.internal.core.PackageFragmentRoot.computeChildren(PackageFragmentRoot.java:193) at org.eclipse.jdt.internal.core.PackageFragmentRoot.buildStructure(PackageFragmentRoot.java:154) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:258) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:515) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:252) at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:238) at org.eclipse.jdt.internal.core.PackageFragmentRoot.getKind(PackageFragmentRoot.java:477) at org.eclipse.jdt.internal.core.PackageFragment.getKind(PackageFragment.java:290) at org.eclipse.jdt.internal.core.PackageFragment.validateExistence(PackageFragment.java:506) at org.eclipse.jdt.internal.core.Openable.exists(Openable.java:206) at org.eclipse.jdt.internal.core.PackageFragment.exists(PackageFragment.java:174) at org.eclipse.jdt.ui.StandardJavaElementContentProvider.internalGetParent(StandardJavaElementContentProvider.java:471) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.internalGetParent(PackageExplorerContentProvider.java:395) at org.eclipse.jdt.ui.StandardJavaElementContentProvider.getParent(StandardJavaElementContentProvider.java:251) at org.eclipse.jface.viewers.AbstractTreeViewer.getParentElement(AbstractTreeViewer.java:1658) at org.eclipse.jface.viewers.TreeViewer.getParentElement(TreeViewer.java:607) at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1585) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2466) at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1741) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2906) at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1697) at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1139) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.showInput(PackageExplorerPart.java:1050) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.editorActivated(PackageExplorerPart.java:999) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.setLinkingEnabled(PackageExplorerPart.java:1271) at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.createPartControl(PackageExplorerPart.java:548) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313) at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:529) at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270) at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473) at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1254) at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:666) at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:574) at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:568) at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:272) at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:981) at org.eclipse.ui.internal.WorkbenchPage.setPerspective(WorkbenchPage.java:3614) at org.eclipse.ui.internal.WorkbenchPage.busySetPerspective(WorkbenchPage.java:1041) at org.eclipse.ui.internal.WorkbenchPage.access$16(WorkbenchPage.java:1025) at org.eclipse.ui.internal.WorkbenchPage$19.run(WorkbenchPage.java:3715) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchPage.setPerspective(WorkbenchPage.java:3713) at org.eclipse.ui.internal.PerspectiveBarContributionItem.select(PerspectiveBarContributionItem.java:124) at org.eclipse.ui.internal.PerspectiveBarManager$1.widgetSelected(PerspectiveBarManager.java:129) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 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:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) The "Error Log" gives the following details: eclipse.buildId=M20100909-0800 java.version=1.6.0_22 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE Framework arguments: -product org.eclipse.epp.package.cpp.product Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.cpp.product Error Fri Nov 12 14:01:49 CET 2010 Unable to create view ID org.eclipse.jdt.ui.PackageExplorer: 4 And the exception trace as above. Reproducible: Didn't try
What is selected before you switch (element type, full name)?
We need more details about what was done when the perspectives were switched.
I could reproduce this problem by trying to create a package with the name elnu. Code around internalScanIdentifierOrKeyword(Scanner.java:2984) doesn't look good. The preceding if is incrementing the index!
(In reply to comment #3) > I could reproduce this problem by trying to create a package with the name > elnu. > Code around internalScanIdentifierOrKeyword(Scanner.java:2984) doesn't look > good. The preceding if is incrementing the index! Thanks. Reproduced as well. Investigating.
Created attachment 183127 [details] Proposed fix + regression test
The decoding of "else" and "enum" was wrong. If "el" matches, then if should not check "num". Daniel, I think we should backport to 3.6.2 as there is no workaround for this issue and the fix is safe. I'll run all tests to make sure it works as expected.
Created attachment 183129 [details] Proposed fix + regression tests Also updated the PublicScanner.
Released for 3.7M4. Daniel, I am requesting PMC approval for 3.6.2 backport.
Closing as FIXED. Will reopen if backported to 3.6.2
I agree, that this needs to be backported to 3.6.2.
Reopen for release in 3.6.2.
Released for 3.6.2.
Verified for 3.7M4 using build I20101206-1800
Verified for 3.6.2 using build M20110119-0834