From 4d079801bf182fe570e7ccafd8154f13ad5196cd Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 23 Mar 2015 15:43:07 +0100 Subject: [PATCH] incompatible types quickfix: reregister for variable initializer (IDEA-138023) --- .../codeInsight/daemon/impl/analysis/HighlightUtil.java | 6 +----- .../quickFix/variableType/afterVararg.java | 8 ++++++++ .../quickFix/variableType/beforeVararg.java | 8 ++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/afterVararg.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/beforeVararg.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index f5be639271d5..8f68c7ff4db9 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -479,6 +479,7 @@ public class HighlightUtil extends HighlightUtilBase { HighlightInfo highlightInfo = checkAssignability(lType, rType, initializer, new TextRange(start, end), 0); if (highlightInfo != null) { registerChangeVariableTypeFixes(variable, rType, variable.getInitializer(), highlightInfo); + registerChangeVariableTypeFixes(initializer, lType, null, highlightInfo); } return highlightInfo; } @@ -2731,11 +2732,6 @@ public class HighlightUtil extends HighlightUtilBase { QuickFixAction.registerQuickFixAction(highlightInfo, PriorityActionWrapper .lowPriority(method, QUICK_FIX_FACTORY.createMethodReturnFix(method, parameter.getType(), true))); } - } else if (expr instanceof PsiReferenceExpression) { - final PsiElement resolve = ((PsiReferenceExpression)expr).resolve(); - if (resolve instanceof PsiVariable) { - registerChangeVariableTypeFixes((PsiVariable)resolve, parameter.getType(), null, highlightInfo); - } } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/afterVararg.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/afterVararg.java new file mode 100644 index 000000000000..d3f05c041881 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/afterVararg.java @@ -0,0 +1,8 @@ +// "Change field 'foo' type to 'java.lang.String[]'" "true" + +class Base { + private String[] foo; + public void bar(String... args) { + foo = args; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/beforeVararg.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/beforeVararg.java new file mode 100644 index 000000000000..acdd4b75e4c2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/variableType/beforeVararg.java @@ -0,0 +1,8 @@ +// "Change field 'foo' type to 'java.lang.String[]'" "true" + +class Base { + private String foo; + public void bar(String... args) { + foo = args; + } +} \ No newline at end of file