From 09d57e4993fb7e82dc2685ace77376e24e25dc9d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 29 Apr 2020 08:18:44 +0200 Subject: [PATCH] compound assignment: allow assignment to string super types (IDEA-238812) GitOrigin-RevId: 56d7dd94bc8e1b728aef2c59a54bee76ad43df74 --- .../src/com/intellij/psi/util/TypeConversionUtil.java | 6 ++++-- .../advHighlighting6/AssignmentFromStringToObject.java | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java b/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java index e285b7f3e074..e95a44272924 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java @@ -551,8 +551,10 @@ public class TypeConversionUtil { resultTypeRank = STRING_RANK; } else if (rtype.equalsToText(JAVA_LANG_STRING)) { - isApplicable = !isVoidType(ltype); - resultTypeRank = STRING_RANK; + if (isVoidType(ltype)) { + return false; + } + return !strict || ltype.isAssignableFrom(rtype); } else if (isPrimitiveAndNotNullOrWrapper(ltype) && isPrimitiveAndNotNullOrWrapper(rtype)) { resultTypeRank = Math.max(ltypeRank, rtypeRank); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/AssignmentFromStringToObject.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/AssignmentFromStringToObject.java index d9daa319dbcd..603716bc6bce 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/AssignmentFromStringToObject.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/AssignmentFromStringToObject.java @@ -3,5 +3,9 @@ class Test { Object o = ""; o += ""; System.out.println(o); + + CharSequence c = ""; + c += ""; + System.out.println(c); } } \ No newline at end of file