### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/ResolvedBinaryField.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ResolvedBinaryField.java,v retrieving revision 1.3 diff -u -r1.3 ResolvedBinaryField.java --- model/org/eclipse/jdt/internal/core/ResolvedBinaryField.java 22 Apr 2005 16:25:34 -0000 1.3 +++ model/org/eclipse/jdt/internal/core/ResolvedBinaryField.java 29 Mar 2006 15:08:53 -0000 @@ -51,4 +51,10 @@ buffer.append("}"); //$NON-NLS-1$ } } + + public JavaElement unresolved() { + SourceRefElement resolvedHandle = new BinaryField(this.parent, this.name); + resolvedHandle.occurrenceCount = this.occurrenceCount; + return resolvedHandle; + } } Index: model/org/eclipse/jdt/internal/core/ResolvedSourceType.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ResolvedSourceType.java,v retrieving revision 1.5 diff -u -r1.5 ResolvedSourceType.java --- model/org/eclipse/jdt/internal/core/ResolvedSourceType.java 22 Apr 2005 16:25:34 -0000 1.5 +++ model/org/eclipse/jdt/internal/core/ResolvedSourceType.java 29 Mar 2006 15:08:54 -0000 @@ -57,4 +57,10 @@ buffer.append("}"); //$NON-NLS-1$ } } + + public JavaElement unresolved() { + SourceRefElement resolvedHandle = new SourceType(this.parent, this.name); + resolvedHandle.occurrenceCount = this.occurrenceCount; + return resolvedHandle; + } } Index: model/org/eclipse/jdt/internal/core/ResolvedSourceField.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ResolvedSourceField.java,v retrieving revision 1.3 diff -u -r1.3 ResolvedSourceField.java --- model/org/eclipse/jdt/internal/core/ResolvedSourceField.java 22 Apr 2005 16:25:34 -0000 1.3 +++ model/org/eclipse/jdt/internal/core/ResolvedSourceField.java 29 Mar 2006 15:08:54 -0000 @@ -51,4 +51,10 @@ buffer.append("}"); //$NON-NLS-1$ } } + + public JavaElement unresolved() { + SourceRefElement resolvedHandle = new SourceField(this.parent, this.name); + resolvedHandle.occurrenceCount = this.occurrenceCount; + return resolvedHandle; + } } Index: model/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java,v retrieving revision 1.3 diff -u -r1.3 ResolvedSourceMethod.java --- model/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java 22 Apr 2005 16:25:34 -0000 1.3 +++ model/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java 29 Mar 2006 15:08:54 -0000 @@ -38,6 +38,7 @@ public boolean isResolved() { return true; } + /** * @private Debugging purposes */ @@ -49,4 +50,10 @@ buffer.append("}"); //$NON-NLS-1$ } } + + public JavaElement unresolved() { + SourceRefElement resolvedHandle = new SourceMethod(this.parent, this.name, this.parameterTypes); + resolvedHandle.occurrenceCount = this.occurrenceCount; + return resolvedHandle; + } } Index: model/org/eclipse/jdt/internal/core/ResolvedBinaryType.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ResolvedBinaryType.java,v retrieving revision 1.3 diff -u -r1.3 ResolvedBinaryType.java --- model/org/eclipse/jdt/internal/core/ResolvedBinaryType.java 22 Apr 2005 16:25:34 -0000 1.3 +++ model/org/eclipse/jdt/internal/core/ResolvedBinaryType.java 29 Mar 2006 15:08:53 -0000 @@ -57,4 +57,10 @@ buffer.append("}"); //$NON-NLS-1$ } } + + public JavaElement unresolved() { + SourceRefElement resolvedHandle = new BinaryType(this.parent, this.name); + resolvedHandle.occurrenceCount = this.occurrenceCount; + return resolvedHandle; + } } Index: model/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java,v retrieving revision 1.3 diff -u -r1.3 ResolvedBinaryMethod.java --- model/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java 22 Apr 2005 16:25:34 -0000 1.3 +++ model/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java 29 Mar 2006 15:08:53 -0000 @@ -37,6 +37,7 @@ public boolean isResolved() { return true; } + /** * @private Debugging purposes */ @@ -48,4 +49,10 @@ buffer.append("}"); //$NON-NLS-1$ } } + + public JavaElement unresolved() { + SourceRefElement resolvedHandle = new BinaryMethod(this.parent, this.name, this.parameterTypes); + resolvedHandle.occurrenceCount = this.occurrenceCount; + return resolvedHandle; + } } Index: model/org/eclipse/jdt/internal/core/JavaElement.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java,v retrieving revision 1.120 diff -u -r1.120 JavaElement.java --- model/org/eclipse/jdt/internal/core/JavaElement.java 29 Mar 2006 03:08:47 -0000 1.120 +++ model/org/eclipse/jdt/internal/core/JavaElement.java 29 Mar 2006 15:08:53 -0000 @@ -533,6 +533,9 @@ public JavaElement resolved(Binding binding) { return this; } + public JavaElement unresolved() { + return this; + } protected String tabString(int tab) { StringBuffer buffer = new StringBuffer(); for (int i = tab; i > 0; i--) Index: model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java,v retrieving revision 1.93 diff -u -r1.93 TypeHierarchy.java --- model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java 29 Mar 2006 03:14:01 -0000 1.93 +++ model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java 29 Mar 2006 15:08:54 -0000 @@ -150,7 +150,7 @@ * Creates a TypeHierarchy on the given type. */ public TypeHierarchy(IType type, ICompilationUnit[] workingCopies, IJavaSearchScope scope, boolean computeSubtypes) { - this.focusType = type; + this.focusType = type == null ? null : (IType) ((JavaElement) type).unresolved(); // unsure the focus type is unresolved (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=92357) this.workingCopies = workingCopies; this.computeSubtypes = computeSubtypes; this.scope = scope; #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java,v retrieving revision 1.50 diff -u -r1.50 TypeHierarchyTests.java --- src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java 29 Mar 2006 04:03:07 -0000 1.50 +++ src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java 29 Mar 2006 15:08:57 -0000 @@ -738,6 +738,35 @@ } /* + * Ensures that the focus type is put as a non-resolved type + * (regression test for bug 92357 DCR, need type declaration from resolved key + */ +public void testResolvedTypeAsFocus() throws CoreException { + try { + createJavaProject("P", new String[] {""}, new String[] {"JCL15_LIB"}, "", "1.5"); + String source = + "public class X {\n" + + " Y field;\n" + + "}\n" + + "class Y {\n" + + "}"; + createFile("/P/X.java", source); + int start = source.indexOf("Y"); + int end = source.indexOf(""); + IJavaElement[] elements = getCompilationUnit("/P/X.java").codeSelect(start, end-start); + IType focus = (IType) elements[0]; + ITypeHierarchy hierarchy = focus.newTypeHierarchy(null); + assertElementsEqual( + "Unexpected focus type in hierarchy", + "Y [in X.java [in [in [in P]]]]", + new IJavaElement[] {hierarchy.getType()}, + true/*show resolved info*/); + } finally { + deleteProject("P"); + } +} + +/* * Ensures that a type hierarchy on a member type with subtypes in another project is correct * (regression test for bug 101019 RC3: Type Hierarchy does not find implementers/extenders of inner class/interface in other project) */