guava type migration: method parameter migration involves local variables migration if need

This commit is contained in:
Dmitry Batkovich
2015-11-05 16:51:08 +03:00
parent 3bdbffe2fc
commit da7bbf2537
4 changed files with 41 additions and 1 deletions
@@ -29,7 +29,6 @@ import com.intellij.refactoring.typeMigration.TypeConversionDescriptor;
import com.intellij.refactoring.typeMigration.TypeConversionDescriptorBase;
import com.intellij.refactoring.typeMigration.TypeMigrationLabeler;
import com.intellij.refactoring.typeMigration.rules.TypeConversionRule;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.SmartList;
import com.intellij.util.containers.ContainerUtil;
@@ -306,6 +305,10 @@ public class GuavaFluentIterableConversionRule extends BaseGuavaTypeConversionRu
}
break;
}
else if (qualifier instanceof PsiReferenceExpression && ((PsiReferenceExpression)qualifier).resolve() instanceof PsiVariable) {
labeler.migrateExpressionType(qualifier, to, qualifier.getParent(), false, false);
break;
}
else {
return null;
}
@@ -182,6 +182,10 @@ public class GuavaInspectionTest extends JavaCodeInsightFixtureTestCase {
doTest();
}
public void testTypeMigrationRootBackTraverse() {
doTest();
}
private void doTestNoQuickFixes(final Class<? extends IntentionAction>... quickFixesClasses) {
myFixture.configureByFile(getTestName(true) + ".java");
myFixture.enableInspections(new GuavaInspection());
@@ -0,0 +1,17 @@
import com.google.common.collect.FluentIterable;
import java.util.ArrayList;
public class MainFluentIterable {
FluentIter<caret>able<String> m2() {
FluentIterable<String> it = FluentIterable.from(new ArrayList<String>());
return it.transform(s -> s + s);
}
void m3() {
System.out.println((int) m2().size());
}
}
@@ -0,0 +1,16 @@
import java.util.ArrayList;
import java.util.stream.Stream;
public class MainFluentIterable {
Stream<String> m2() {
Stream<String> it = new ArrayList<String>().stream();
return it.map(s -> s + s);
}
void m3() {
System.out.println((int) (int) m2().count());
}
}