From acb65a92adc4e87fda84b326c146ea827bb46534 Mon Sep 17 00:00:00 2001 From: Danila Ponomarenko Date: Thu, 7 Jun 2012 21:15:38 +0400 Subject: [PATCH] IDEA-86926 Also suggest to change parameter type if types mismatch in assignment implemented --- .../daemon/impl/analysis/HighlightUtil.java | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 09b879bb2b81..5a9c44a3b3f4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -422,21 +422,34 @@ public class HighlightUtil { if (rType == null) return null; HighlightInfo highlightInfo = checkAssignability(lType, rType, rExpr, assignment); - if (highlightInfo != null) { - PsiVariable leftVar = null; - if (lExpr instanceof PsiReferenceExpression) { - PsiElement element = ((PsiReferenceExpression)lExpr).resolve(); - if (element instanceof PsiVariable) { - leftVar = (PsiVariable)element; - } - } - if (leftVar != null) { - registerChangeVariableTypeFixes(leftVar, rType, highlightInfo); - } + if (highlightInfo == null) { + return null; } + + registerChangeVariableTypeFixes(lExpr, rType, highlightInfo); + if (lType != null) { + registerChangeVariableTypeFixes(rExpr, lType, highlightInfo); + } + return highlightInfo; } + private static void registerChangeVariableTypeFixes(@NotNull PsiExpression expression, + @NotNull PsiType type, + @NotNull HighlightInfo highlightInfo) { + if (!(expression instanceof PsiReferenceExpression)){ + return; + } + + final PsiElement element = ((PsiReferenceExpression)expression).resolve(); + + if (element == null || !(element instanceof PsiVariable)){ + return; + } + + registerChangeVariableTypeFixes((PsiVariable)element, type, highlightInfo); + } + private static boolean isCastIntentionApplicable(@NotNull PsiExpression expression, @Nullable PsiType toType) { while (expression instanceof PsiTypeCastExpression || expression instanceof PsiParenthesizedExpression) { if (expression instanceof PsiTypeCastExpression) {