From a167792cf45d195ecd79a413a7867b235aa2d6d4 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 16 Dec 2010 17:31:02 +0300 Subject: [PATCH] do not migrate from type to self --- .../daemon/impl/quickfix/VariableTypeFromCallFix.java | 9 ++++++--- .../beforeChangeSignatureAvailable.java | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/varTypeFromCall/beforeChangeSignatureAvailable.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFromCallFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFromCallFix.java index 994daf7cc6a8..1d82cdcddc4f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFromCallFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFromCallFix.java @@ -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; } } } } -} \ No newline at end of file +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/varTypeFromCall/beforeChangeSignatureAvailable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/varTypeFromCall/beforeChangeSignatureAvailable.java new file mode 100644 index 000000000000..9f5ec3b360f3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/varTypeFromCall/beforeChangeSignatureAvailable.java @@ -0,0 +1,11 @@ +// "Change 'var' type to 'Foo" "false" +public class Test { + void foo() { + final Foo var = new Foo(); + var.foo("", 66); + } +} + +class Foo { + void foo(String str, String str1){} +} \ No newline at end of file