Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 198586
Collapse All | Expand All

(-)ui/org/eclipse/jdt/ui/tests/quickfix/TypeMismatchQuickFixTests.java (+48 lines)
Lines 1778-1782 Link Here
1778
1778
1779
		assertExpectedExistInProposals(proposals, expected);
1779
		assertExpectedExistInProposals(proposals, expected);
1780
	}
1780
	}
1781
	
1782
	public void testTypeMismatchWithTypeInSamePackage() throws Exception {
1783
		// test for bug 198586
1784
		IPackageFragment pack2= fSourceFolder.createPackageFragment("test2", false, null);
1785
		StringBuffer buf= new StringBuffer();
1786
		buf.append("package test1;\n");
1787
		buf.append("public class E {}\n");
1788
		pack2.createCompilationUnit("E.java", buf.toString(), false, null);
1789
		
1790
		IPackageFragment pack1= fSourceFolder.createPackageFragment("test1", false, null);
1791
		buf= new StringBuffer();
1792
		buf.append("package test1;\n");
1793
		buf.append("public class E {}\n");
1794
		pack1.createCompilationUnit("E.java", buf.toString(), false, null);
1795
		
1796
		buf= new StringBuffer();
1797
		buf.append("package test1;\n");
1798
		buf.append("public class Test {\n");
1799
		buf.append("    test2.E e2= new Object();\n");
1800
		buf.append("    E e1;\n");
1801
		buf.append("}\n");
1802
		ICompilationUnit cu= pack1.createCompilationUnit("Test.java", buf.toString(), false, null);
1803
1804
		CompilationUnit astRoot= getASTRoot(cu);
1805
		ArrayList proposals= collectCorrections(cu, astRoot);
1806
1807
		assertCorrectLabels(proposals);
1808
		assertNumberOfProposals(proposals, 2);
1809
1810
		String[] expected= new String[2];
1811
		buf= new StringBuffer();
1812
		buf.append("package test1;\n");
1813
		buf.append("public class Test {\n");
1814
		buf.append("    test2.E e2= (test2.E) new Object();\n");
1815
		buf.append("    E e1;\n");
1816
		buf.append("}\n");
1817
		expected[0]= buf.toString();
1818
1819
		buf= new StringBuffer();
1820
		buf.append("package test1;\n");
1821
		buf.append("public class Test {\n");
1822
		buf.append("    Object e2= new Object();\n");
1823
		buf.append("    E e1;\n");
1824
		buf.append("}\n");
1825
		expected[1]= buf.toString();
1826
1827
		assertExpectedExistInProposals(proposals, expected);
1828
	}
1781
1829
1782
}
1830
}
(-)ui/org/eclipse/jdt/internal/ui/text/correction/CastCompletionProposal.java (-4 / +9 lines)
Lines 14-20 Link Here
14
import org.eclipse.core.runtime.CoreException;
14
import org.eclipse.core.runtime.CoreException;
15
15
16
import org.eclipse.jdt.core.ICompilationUnit;
16
import org.eclipse.jdt.core.ICompilationUnit;
17
18
import org.eclipse.jdt.core.dom.AST;
17
import org.eclipse.jdt.core.dom.AST;
19
import org.eclipse.jdt.core.dom.ASTNode;
18
import org.eclipse.jdt.core.dom.ASTNode;
20
import org.eclipse.jdt.core.dom.CastExpression;
19
import org.eclipse.jdt.core.dom.CastExpression;
Lines 29-36 Link Here
29
import org.eclipse.jdt.core.dom.Type;
28
import org.eclipse.jdt.core.dom.Type;
30
import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
29
import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
31
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;
30
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;
31
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite.ImportRewriteContext;
32
32
33
import org.eclipse.jdt.internal.corext.codemanipulation.ContextSensitiveImportRewriteContext;
33
import org.eclipse.jdt.internal.corext.dom.ASTNodeFactory;
34
import org.eclipse.jdt.internal.corext.dom.ASTNodeFactory;
35
34
import org.eclipse.jdt.internal.ui.JavaPluginImages;
36
import org.eclipse.jdt.internal.ui.JavaPluginImages;
35
37
36
public class CastCompletionProposal extends LinkedCorrectionProposal {
38
public class CastCompletionProposal extends LinkedCorrectionProposal {
Lines 56-66 Link Here
56
58
57
	private Type getNewCastTypeNode(ASTRewrite rewrite, ImportRewrite importRewrite) throws CoreException {
59
	private Type getNewCastTypeNode(ASTRewrite rewrite, ImportRewrite importRewrite) throws CoreException {
58
		AST ast= rewrite.getAST();
60
		AST ast= rewrite.getAST();
61
		
62
		ImportRewriteContext context= new ContextSensitiveImportRewriteContext((CompilationUnit) fNodeToCast.getRoot(), fNodeToCast.getStartPosition(), importRewrite);
63
		
59
		if (fCastType != null) {
64
		if (fCastType != null) {
60
			if (fCastType instanceof ITypeBinding) {
65
			if (fCastType instanceof ITypeBinding) {
61
				return importRewrite.addImport((ITypeBinding) fCastType, ast);
66
				return importRewrite.addImport((ITypeBinding) fCastType, ast, context);
62
			} else {
67
			} else {
63
				String string= importRewrite.addImport((String) fCastType);
68
				String string= importRewrite.addImport((String) fCastType, context);
64
				return ASTNodeFactory.newType(ast, string);
69
				return ASTNodeFactory.newType(ast, string);
65
			}
70
			}
66
		}
71
		}
Lines 83-89 Link Here
83
				if (bindings.length > 0) {
88
				if (bindings.length > 0) {
84
					ITypeBinding first= getCastFavorite(bindings, fNodeToCast.resolveTypeBinding());
89
					ITypeBinding first= getCastFavorite(bindings, fNodeToCast.resolveTypeBinding());
85
90
86
					Type newTypeNode= importRewrite.addImport(first, ast);
91
					Type newTypeNode= importRewrite.addImport(first, ast, context);
87
					addLinkedPosition(rewrite.track(newTypeNode), true, "casttype"); //$NON-NLS-1$
92
					addLinkedPosition(rewrite.track(newTypeNode), true, "casttype"); //$NON-NLS-1$
88
					for (int i= 0; i < bindings.length; i++) {
93
					for (int i= 0; i < bindings.length; i++) {
89
						addLinkedPositionProposal("casttype", bindings[i]); //$NON-NLS-1$
94
						addLinkedPositionProposal("casttype", bindings[i]); //$NON-NLS-1$

Return to bug 198586