Bug 93854 - IAE in Util.scanTypeSignature when scanning a signature retrieved from a binding key
Summary: IAE in Util.scanTypeSignature when scanning a signature retrieved from a bin...
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 major (vote)
Target Milestone: 3.1 M7   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-05-05 17:23 EDT by Dirk Baeumer CLA
Modified: 2005-05-12 11:15 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dirk Baeumer CLA 2005-05-05 17:23:14 EDT
Thread [main] (Suspended (breakpoint at line 2319 in Util))
	Util.scanTypeSignature(char[], int) line: 2319
	Signature.getTypeParameters(char[]) line: 1382
	Signature.getTypeParameters(String) line: 1407
	JavaElementLabels.getTypeLabel(IType, long, StringBuffer) line: 821
	JavaElementLabels.getElementLabel(IJavaElement, long, StringBuffer) line: 398
	JavaElementLabels.getElementLabel(IJavaElement, long) line: 363
	JavaElementLabels.getTextLabel(Object, long) line: 345
	HierarchyLabelProvider(JavaUILabelProvider).getText(Object) line: 161
	HierarchyLabelProvider.getText(Object) line: 126
	DecoratingJavaLabelProvider(DecoratingLabelProvider).getText(Object) line: 118
	DecoratingJavaLabelProvider(DecoratingLabelProvider).updateLabel(ViewerLabel,
Object) line: 208
	TraditionalHierarchyViewer(StructuredViewer).buildLabel(ViewerLabel, Object,
IViewerLabelProvider) line: 1846
	TraditionalHierarchyViewer(TreeViewer).doUpdateItem(Item, Object) line: 228
	AbstractTreeViewer$UpdateItemSafeRunnable.run() line: 85
	InternalPlatform.run(ISafeRunnable) line: 1031
	Platform.run(ISafeRunnable) line: 757
	JFaceUtil$1.run(ISafeRunnable) line: 44
	SafeRunnable.run(ISafeRunnable) line: 148
	TraditionalHierarchyViewer(AbstractTreeViewer).doUpdateItem(Widget, Object,
boolean) line: 621
	StructuredViewer$UpdateItemSafeRunnable.run() line: 434
	InternalPlatform.run(ISafeRunnable) line: 1031
	Platform.run(ISafeRunnable) line: 757
	JFaceUtil$1.run(ISafeRunnable) line: 44
	SafeRunnable.run(ISafeRunnable) line: 148
	TraditionalHierarchyViewer(StructuredViewer).updateItem(Widget, Object) line: 1754
	TraditionalHierarchyViewer(AbstractTreeViewer).createTreeItem(Widget, Object,
int) line: 535
	AbstractTreeViewer$1.run() line: 514
	BusyIndicator.showWhile(Display, Runnable) line: 69
	TraditionalHierarchyViewer(AbstractTreeViewer).createChildren(Widget) line: 494
	TraditionalHierarchyViewer(AbstractTreeViewer).internalExpandToLevel(Widget,
int) line: 1120
	TraditionalHierarchyViewer(AbstractTreeViewer).internalExpandToLevel(Widget,
int) line: 1129
	TraditionalHierarchyViewer(AbstractTreeViewer).expandToLevel(Object, int) line: 658
	TraditionalHierarchyViewer(AbstractTreeViewer).expandToLevel(int) line: 641
	TraditionalHierarchyViewer.updateContent(boolean) line: 61
	TypeHierarchyViewPart$11.run() line: 1090
	BusyIndicator.showWhile(Display, Runnable) line: 69
	TypeHierarchyViewPart.updateHierarchyViewer(boolean) line: 1093
	TypeHierarchyViewPart.updateInput(IJavaElement) line: 541
	TypeHierarchyViewPart.setInputElement(IJavaElement) line: 486
	OpenTypeHierarchyUtil.openInViewPart(IWorkbenchWindow, IJavaElement) line: 98
	OpenTypeHierarchyUtil.open(IJavaElement[], IWorkbenchWindow) line: 75
	OpenTypeHierarchyAction.run(IJavaElement[]) line: 181
	OpenTypeHierarchyAction.run(ITextSelection) line: 143
	OpenTypeHierarchyAction(SelectionDispatchAction).dispatchRun(ISelection) line: 226
	OpenTypeHierarchyAction(SelectionDispatchAction).run() line: 198
	OpenTypeHierarchyAction(Action).runWithEvent(Event) line: 996
	ActionHandler.execute(Map) line: 182
	LegacyHandlerWrapper.execute(ExecutionEvent) line: 108
	Command.execute(ExecutionEvent) line: 312
	ParameterizedCommand.execute(Object, Object) line: 396
	WorkbenchKeyboard.executeCommand(Binding, Object) line: 452
	WorkbenchKeyboard.press(List, Event) line: 722
	WorkbenchKeyboard.processKeyEvent(List, Event) line: 766
	WorkbenchKeyboard.filterKeySequenceBindings(Event) line: 543
	WorkbenchKeyboard.access$3(WorkbenchKeyboard, Event) line: 486
	WorkbenchKeyboard$KeyDownFilter.handleEvent(Event) line: 110
	EventTable.sendEvent(Event) line: 82
	Display.filterEvent(Event) line: 781
	StyledText(Widget).sendEvent(Event) line: 841
	StyledText(Widget).sendEvent(int, Event, boolean) line: 866
	StyledText(Widget).sendEvent(int, Event) line: 851
	StyledText(Widget).sendKeyEvent(int, int, int, int, Event) line: 879
	StyledText(Widget).sendKeyEvent(int, int, int, int) line: 875
	StyledText(Widget).wmKeyDown(int, int, int) line: 1467
	StyledText(Control).WM_KEYDOWN(int, int) line: 3342
	StyledText(Control).windowProc(int, int, int, int) line: 3062
	Display.windowProc(int, int, int, int) line: 3493
	OS.DispatchMessageW(MSG) line: not available [native method]
	OS.DispatchMessage(MSG) line: 1650
	Display.readAndDispatch() line: 2532
	Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 1592
	Workbench.runUI() line: 1556
	Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 314
	PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 143
	IDEApplication.run(Object) line: 103
	PlatformActivator$1.run(Object) line: 230
	EclipseStarter.run(Object) line: 345
	EclipseStarter.run(String[], Runnable) line: 158
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available
[native method]
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 85
	NativeMethodAccessorImpl.invoke(Method, Object, Object[]) line: 58
	DelegatingMethodAccessorImpl.invoke(Method, Object, Object[]) line: 60
	Method.invoke(Object, Object[]) line: 391
	Main.invokeFramework(String[], URL[]) line: 328
	Main.basicRun(String[]) line: 272
	Main.run(String[]) line: 974
	Main.main(String[]) line: 950


Binding key retrieved from Java element:
           Ljava/util/Collections$CheckedMap<TK;T,V;>;

Signature retrieved from binding key for which we ask type parameters:
           <K:,V:>Ljava.util.Collections$CheckedMap;

char[] in scanTypeSignature
           [<, K, :, ,, V, :, >, L, j, a, v, a, ., u, t, i, l, ., C, o, l, l, e,
c, t, i, o, n, s, $, C, h, e, c, k, e, d, M, a, p, ;]

start in scanTypeSignature: 3

Setting to major since this blocks type hierarchies on generic types.
Comment 1 Dirk Baeumer CLA 2005-05-05 17:23:44 EDT
Additional hint: created type hierarchy for Map from Java 5.
Comment 2 Jerome Lanneluc CLA 2005-05-06 11:13:44 EDT
Cannot reproduce. For me the key is Ljava/util/Collections$CheckedMap<TK;TV;>;
Comment 3 Jerome Lanneluc CLA 2005-05-06 12:04:38 EDT
Reproduced. This happens only if the binary type is not in the Java model cache.
Comment 4 Jerome Lanneluc CLA 2005-05-06 12:22:03 EDT
Fixed HierarchyBinaryType#getGenericTypeSignature() to not add an extra comma
between type parameters.
Added regression test TypeHierarchyTests#testGeneric6()
Comment 5 Frederic Fusier CLA 2005-05-12 11:15:37 EDT
Verified for 3.1 M7 using build I20050509-2010 + jdt.core HEAD.