Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 353640

Summary: AIOOBE in ParameterizedTypeBinding.substitute
Product: [Eclipse Project] JDT Reporter: Markus Keller <markus.kell.r>
Component: CoreAssignee: Ayushman Jain <amj87.iitr>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: amj87.iitr, Olivier_Thomann, satyam.kandula, srikanth_sankaran
Version: 3.8Flags: srikanth_sankaran: review+
Target Milestone: 3.7.1   
Hardware: PC   
OS: Windows 7   
Whiteboard:
Attachments:
Description Flags
proposed fix
none
Proposed fix + regression test
none
released patch none

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