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