Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 353640 - AIOOBE in ParameterizedTypeBinding.substitute
Summary: AIOOBE in ParameterizedTypeBinding.substitute
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.8   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 3.7.1   Edit
Assignee: Ayushman Jain CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-02 15:48 EDT by Markus Keller CLA
Modified: 2011-09-14 01:59 EDT (History)
4 users (show)

See Also:
srikanth_sankaran: review+


Attachments
proposed fix (1.74 KB, patch)
2011-08-19 03:12 EDT, Ayushman Jain CLA
no flags Details | Diff
Proposed fix + regression test (3.79 KB, patch)
2011-08-19 10:25 EDT, Olivier Thomann CLA
no flags Details | Diff
released patch (3.58 KB, patch)
2011-08-23 05:09 EDT, Ayushman Jain CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Keller CLA 2011-08-02 15:48:42 EDT
HEAD

- put the example from bug 353452 into a 1.7 project
- put the caret into Integer
- open ASTView
- choose ASTParser.createAST and AST level 3 or 4
- click the leftmost ASTView toolbar button (Show AST...)

!ENTRY org.eclipse.jdt.core 4 4 2011-08-02 21:46:56.966
!MESSAGE Could not retrieve declared methods
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 0
	at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.substitute(ParameterizedTypeBinding.java:959)
	at org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding$1.substitute(ParameterizedMethodBinding.java:72)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.substitute(Scope.java:365)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.substitute(Scope.java:473)
	at org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding.<init>(ParameterizedMethodBinding.java:109)
	at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.createParameterizedMethod(ParameterizedTypeBinding.java:311)
	at org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding.methods(ParameterizedTypeBinding.java:799)
	at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.availableMethods(ReferenceBinding.java:173)
	at org.eclipse.jdt.core.dom.TypeBinding.getDeclaredMethods(TypeBinding.java:267)
	at org.eclipse.jdt.astview.views.Binding.getChildren(Binding.java:189)
	at org.eclipse.jdt.astview.views.ASTViewContentProvider.getChildren(ASTViewContentProvider.java:95)
	at org.eclipse.jdt.astview.views.ASTViewContentProvider.hasChildren(ASTViewContentProvider.java:230)
	at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2146)
	at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:588)
	at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2176)
	at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2858)
	at org.eclipse.jface.viewers.TreeViewer.updatePlus(TreeViewer.java:852)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:849)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:823)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:797)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:768)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1646)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1643)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1643)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1643)
	at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2530)
	at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1767)
	at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2970)
	at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1723)
	at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1139)
	at org.eclipse.jdt.astview.views.ASTView.internalSetInput(ASTView.java:550)
	at org.eclipse.jdt.astview.views.ASTView.setInput(ASTView.java:525)
	at org.eclipse.jdt.astview.views.ASTView.performSetFocus(ASTView.java:1259)
	at org.eclipse.jdt.astview.views.ASTView$20.run(ASTView.java:995)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	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:344)
	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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 1 Ayushman Jain CLA 2011-08-19 03:12:09 EDT
Created attachment 201766 [details]
proposed fix

Patch passes all tests

Olivier, where should the regression test for this go?
Comment 2 Olivier Thomann CLA 2011-08-19 08:03:29 EDT
I would add it to org.eclipse.jdt.core.tests.dom.ASTConverter17Test.
Comment 3 Olivier Thomann CLA 2011-08-19 08:05:50 EDT
Srikanth, this should be a candidate for 3.7.1 as it is not possible to create the DOM AST tree for the given example.
Not being able to create the DOM tree is really annoying as it fills the console with errors and prevents a good usage of the java editor.
What do you think ?
Comment 4 Olivier Thomann CLA 2011-08-19 10:25:03 EDT
Created attachment 201799 [details]
Proposed fix + regression test

Same patch with a regression test
Comment 5 Srikanth Sankaran CLA 2011-08-22 01:47:02 EDT
Patch looks good. TESTS_NUMBERS needs to be commented out.
+1 for 3.7.1
Comment 6 Ayushman Jain CLA 2011-08-23 04:51:29 EDT
Retargetting to 3.7.1
Comment 7 Ayushman Jain CLA 2011-08-23 05:09:37 EDT
Created attachment 201977 [details]
released patch

Patch with TESTS_NAMES commented out. Thanks for the test Olivier.
Comment 8 Olivier Thomann CLA 2011-08-23 09:31:41 EDT
(In reply to comment #7)
> Created attachment 201977 [details] [diff]
> released patch
+1.
Comment 9 Ayushman Jain CLA 2011-08-23 13:06:36 EDT
Released in HEAD for 3.8M2 and in R3_7_maintenance for 3.7.1
Comment 10 Satyam Kandula CLA 2011-08-25 07:27:28 EDT
Verified for 3.7.1 RC2 using build M20110824-0800
Comment 11 Srikanth Sankaran CLA 2011-09-14 01:59:11 EDT
Verified for 3.8M2 using build id  I20110912-0800