Bug 240815 - [DOM] CCE in AST#resolveWellKnownType(..) for java.lang.Boolean without rt.jar
Summary: [DOM] CCE in AST#resolveWellKnownType(..) for java.lang.Boolean without rt.jar
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.5   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.5 M1   Edit
Assignee: Olivier Thomann CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-07-15 08:29 EDT by Markus Keller CLA
Modified: 2008-08-06 12:46 EDT (History)
3 users (show)

See Also:


Attachments
Proposed fix + regression tests (12.11 KB, patch)
2008-07-16 11:21 EDT, Olivier Thomann CLA
no flags Details | Diff
Same patch + updated regression tests (12.29 KB, patch)
2008-07-16 12:17 EDT, Olivier Thomann CLA
no flags Details | Diff
Updated patch with Kent's comment (12.05 KB, patch)
2008-07-16 12:45 EDT, Olivier Thomann 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 2008-07-15 08:29:14 EDT
HEAD

- create a Java Project
- remove the JRE System Library from the build path
- paste this class:
package p;
public class C {
}
- open ASTView (with both recovery option enabled)
=> CCE in AST#resolveWellKnownType(..) for "java.lang.Boolean"

java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.PackageBinding cannot be cast to org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2234)
	at org.eclipse.jdt.core.dom.DefaultBindingResolver.resolveWellKnownType(DefaultBindingResolver.java:1691)
	at org.eclipse.jdt.core.dom.AST.resolveWellKnownType(AST.java:1166)
	at org.eclipse.jdt.astview.views.WellKnownTypesProperty.getChildren(WellKnownTypesProperty.java:75)
	at org.eclipse.jdt.astview.views.ASTViewContentProvider.getChildren(ASTViewContentProvider.java:95)
	at org.eclipse.jdt.astview.views.ASTViewContentProvider.hasChildren(ASTViewContentProvider.java:227)
	at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2076)
	at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:582)
	at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2102)
	at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2752)
	at org.eclipse.jface.viewers.TreeViewer.updatePlus(TreeViewer.java:842)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:828)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:802)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:776)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:634)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1490)
	at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:823)
	at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1474)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1365)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:397)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1328)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1467)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:251)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1603)
	at org.eclipse.jdt.astview.views.ASTView.resetView(ASTView.java:574)
	at org.eclipse.jdt.astview.views.ASTView.internalSetInput(ASTView.java:545)
	... 33 more
Comment 1 Olivier Thomann CLA 2008-07-16 11:21:32 EDT
Created attachment 107631 [details]
Proposed fix + regression tests
Comment 2 Olivier Thomann CLA 2008-07-16 11:22:59 EDT
Kent, could you please review the part of the fix inside the Scope class?
Comment 3 Olivier Thomann CLA 2008-07-16 12:17:15 EDT
Created attachment 107635 [details]
Same patch + updated regression tests
Comment 4 Kent Johnson CLA 2008-07-16 12:33:30 EDT
The scope change could be just :


if (!binding.isValidBinding()) {
	if (binding instanceof PackageBinding) {
		char[][] qName = new char[][] { compoundName[0] };
		return new ProblemReferenceBinding(
			qName,
			environment().createMissingType(null, qName),
			ProblemReasons.NotFound);
	}
	return (ReferenceBinding) binding;
}
Comment 5 Olivier Thomann CLA 2008-07-16 12:45:11 EDT
Created attachment 107639 [details]
Updated patch with Kent's comment
Comment 6 Olivier Thomann CLA 2008-07-16 12:48:31 EDT
Released for 3.5M1.

Philippe, do you want it to be backported to 3.4.1 ?
Comment 7 Kent Johnson CLA 2008-08-06 12:46:18 EDT
Verified for 3.5M1 using I20080805-1307