do not migrate from type to self

This commit is contained in:
anna
2010-12-16 19:16:28 +03:00
parent 09c64d4398
commit a167792cf4
2 changed files with 17 additions and 3 deletions
@@ -97,17 +97,20 @@ public class VariableTypeFromCallFix implements IntentionAction {
}
final PsiElement resolved = ((PsiReferenceExpression)qualifierExpression).resolve();
if (resolved instanceof PsiVariable) {
final PsiClass varClass = PsiUtil.resolveClassInType(((PsiVariable)resolved).getType());
final PsiType varType = ((PsiVariable)resolved).getType();
final PsiClass varClass = PsiUtil.resolveClassInType(varType);
final PsiResolveHelper resolveHelper = JavaPsiFacade.getInstance(expression.getProject()).getResolveHelper();
if (varClass != null) {
final PsiSubstitutor psiSubstitutor = resolveHelper.inferTypeArguments(varClass.getTypeParameters(),
parameters,
expressions, PsiSubstitutor.EMPTY, resolved, false);
final PsiClassType appropriateVarType = JavaPsiFacade.getElementFactory(expression.getProject()).createType(varClass, psiSubstitutor);
QuickFixAction.registerQuickFixAction(highlightInfo, new VariableTypeFromCallFix(appropriateVarType, (PsiVariable) resolved));
if (!varType.equals(appropriateVarType)) {
QuickFixAction.registerQuickFixAction(highlightInfo, new VariableTypeFromCallFix(appropriateVarType, (PsiVariable) resolved));
}
break;
}
}
}
}
}
}
@@ -0,0 +1,11 @@
// "Change 'var' type to 'Foo" "false"
public class Test {
void foo() {
final Foo var = new Foo();
var.foo("", 6<caret>6);
}
}
class Foo {
void foo(String str, String str1){}
}