diff options
| author | Manju Mathew | 2014-03-18 03:41:46 +0000 |
|---|---|---|
| committer | Manju Mathew | 2014-03-18 03:49:27 +0000 |
| commit | e5ad6393fc711135c738e24711150f7b451e535d (patch) | |
| tree | ac76732c64e1503544fe90411bd3ebde145bafb9 | |
| parent | e8c53879930bcf2ad9593bb9e8236d6581ab7830 (diff) | |
| download | eclipse.jdt.ui-e5ad6393fc711135c738e24711150f7b451e535d.tar.gz eclipse.jdt.ui-e5ad6393fc711135c738e24711150f7b451e535d.tar.xz eclipse.jdt.ui-e5ad6393fc711135c738e24711150f7b451e535d.zip | |
Fixed Bug 217984: [quick assist] wrong type inferred by assign to new
local variable
Added testcases.
| -rw-r--r-- | org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AdvancedQuickAssistTest.java | 176 |
1 files changed, 175 insertions, 1 deletions
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AdvancedQuickAssistTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AdvancedQuickAssistTest.java index fc762d4463..2352d9956f 100644 --- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AdvancedQuickAssistTest.java +++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AdvancedQuickAssistTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2013 IBM Corporation and others. + * Copyright (c) 2000, 2014 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -69,6 +69,7 @@ public class AdvancedQuickAssistTest extends QuickFixTest { } + @Override protected void setUp() throws Exception { Hashtable options= TestOptions.getDefaultOptions(); options.put(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, JavaCore.SPACE); @@ -94,6 +95,7 @@ public class AdvancedQuickAssistTest extends QuickFixTest { } + @Override protected void tearDown() throws Exception { JavaProjectHelper.clear(fJProject1, ProjectTestSetup.getDefaultClasspath()); } @@ -5918,4 +5920,176 @@ public class AdvancedQuickAssistTest extends QuickFixTest { assertCorrectLabels(proposals); assertProposalDoesNotExist(proposals, CorrectionMessages.AdvancedQuickAssistProcessor_convertToIfReturn); } + + // bug 217984 + public void testAssignToNewVariable() throws Exception { + IPackageFragment pack1= fSourceFolder.createPackageFragment("test1", false, null); + StringBuffer buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<?> g = new Gen<>();\n"); + buf.append(" g.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + ICompilationUnit cu= pack1.createCompilationUnit("Gen.java", buf.toString(), false, null); + + String str= "g.get(0);"; + AssistContext context= getCorrectionContext(cu, buf.toString().indexOf(str) + str.length(), 0); + List proposals= collectAssists(context, false); + assertNumberOfProposals(proposals, 5); + assertCorrectLabels(proposals); + + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<?> g = new Gen<>();\n"); + buf.append(" List<String> list = g.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + String expected1= buf.toString(); + + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" private List<String> list;\n"); + buf.append("\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<?> g = new Gen<>();\n"); + buf.append(" list = g.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + String expected2= buf.toString(); + + assertExpectedExistInProposals(proposals, new String[] { expected1, expected2 }); + + } + + // bug 217984 + public void testAssignToNewVariable1() throws Exception { + IPackageFragment pack1= fSourceFolder.createPackageFragment("test1", false, null); + StringBuffer buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<? extends Cloneable> ge = new Gen<>();\n"); + buf.append(" ge.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + ICompilationUnit cu= pack1.createCompilationUnit("Gen.java", buf.toString(), false, null); + + String str= "ge.get(0)"; + AssistContext context= getCorrectionContext(cu, buf.toString().indexOf(str) + str.length(), 0); + List proposals= collectAssists(context, false); + assertNumberOfProposals(proposals, 7); + assertCorrectLabels(proposals); + + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<? extends Cloneable> ge = new Gen<>();\n"); + buf.append(" Cloneable cloneable = ge.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + String expected1= buf.toString(); + + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" private Cloneable cloneable;\n"); + buf.append("\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<? extends Cloneable> ge = new Gen<>();\n"); + buf.append(" cloneable = ge.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + String expected2= buf.toString(); + + assertExpectedExistInProposals(proposals, new String[] { expected1, expected2 }); + } + + // bug 217984 + public void testAssignToNewVariable2() throws Exception { + IPackageFragment pack1= fSourceFolder.createPackageFragment("test1", false, null); + StringBuffer buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("import java.util.Vector;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<? super Vector<String>> gs = new Gen<>();\n"); + buf.append(" gs.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + ICompilationUnit cu= pack1.createCompilationUnit("Gen.java", buf.toString(), false, null); + + String str= "gs.get(0)"; + AssistContext context= getCorrectionContext(cu, buf.toString().indexOf(str) + str.length(), 0); + List proposals= collectAssists(context, false); + assertNumberOfProposals(proposals, 7); + assertCorrectLabels(proposals); + + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("import java.util.Vector;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<? super Vector<String>> gs = new Gen<>();\n"); + buf.append(" List<String> list = gs.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + String expected1= buf.toString(); + + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("import java.util.ArrayList;\n"); + buf.append("import java.util.List;\n"); + buf.append("import java.util.RandomAccess;\n"); + buf.append("import java.util.Vector;\n"); + buf.append("\n"); + buf.append("class Gen<E extends List<String> & RandomAccess> extends ArrayList<E> {\n"); + buf.append(" private List<String> list;\n"); + buf.append("\n"); + buf.append(" void foo() {\n"); + buf.append(" Gen<? super Vector<String>> gs = new Gen<>();\n"); + buf.append(" list = gs.get(0);\n"); + buf.append(" }\n"); + buf.append("}\n"); + String expected2= buf.toString(); + + assertExpectedExistInProposals(proposals, new String[] { expected1, expected2 }); + } } |
