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 c701b7f40e88..cb5d00cbc719 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 @@ -470,7 +470,18 @@ public class TypeConversionUtil { || ltypeRank == BOOL_RANK && rtypeRank == BOOL_RANK; } else { - if (isPrimitiveAndNotNull(ltype) || isPrimitiveAndNotNull(rtype)) return false; + if (isPrimitiveAndNotNull(ltype)) { + if (rtype instanceof PsiClassType && ((PsiClassType)rtype).getLanguageLevel().isAtLeast(LanguageLevel.JDK_1_7)) { + return areTypesConvertible(ltype, rtype); + } + return false; + } + if (isPrimitiveAndNotNull(rtype)) { + if (ltype instanceof PsiClassType && ((PsiClassType)ltype).getLanguageLevel().isAtLeast(LanguageLevel.JDK_1_7)) { + return areTypesConvertible(rtype, ltype); + } + return false; + } isApplicable = areTypesConvertible(ltype, rtype) || areTypesConvertible(rtype, ltype); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/Java7CastConventions.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/Java7CastConventions.java new file mode 100644 index 000000000000..370371584122 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/Java7CastConventions.java @@ -0,0 +1,7 @@ +class Test { + public static void main(String[] args) { + Object o = null; + if (o == 1) {} + if (1 == o) {} + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java index ae05e2cb85f5..d06651a0ab87 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java @@ -162,4 +162,5 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase { public void testMethodReferences() throws Exception { doTest(false, true, false); } public void testUsedMethodsByMethodReferences() throws Exception { doTest(true, true, false); } public void testLambdaExpressions() throws Exception { doTest(false, true, false); } + public void testJava7CastConventions() throws Exception { doTest(false, true, false); } }