Bug 240815

Summary: [DOM] CCE in AST#resolveWellKnownType(..) for java.lang.Boolean without rt.jar
Product: [Eclipse Project] JDT Reporter: Markus Keller <markus.kell.r>
Component: CoreAssignee: Olivier Thomann <Olivier_Thomann>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: kent_johnson, Olivier_Thomann, philippe_mulet
Version: 3.5   
Target Milestone: 3.5 M1   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Proposed fix + regression tests
none
Same patch + updated regression tests
none
Updated patch with Kent's comment none

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