Community
Participate
Working Groups
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
Created attachment 107631 [details] Proposed fix + regression tests
Kent, could you please review the part of the fix inside the Scope class?
Created attachment 107635 [details] Same patch + updated regression tests
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; }
Created attachment 107639 [details] Updated patch with Kent's comment
Released for 3.5M1. Philippe, do you want it to be backported to 3.4.1 ?
Verified for 3.5M1 using I20080805-1307