diff --git a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java index 1fd0373825f0..06ac9c07309a 100644 --- a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java @@ -18,8 +18,6 @@ package com.intellij.psi; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; -import com.intellij.openapi.projectRoots.JavaSdkVersion; -import com.intellij.openapi.projectRoots.JavaVersionService; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.text.StringUtil; @@ -211,8 +209,8 @@ public class PsiDiamondTypeImpl extends PsiDiamondType { final DiamondInferenceResult result = new DiamondInferenceResult(classOrAnonymousClassReference.getReferenceName() + "<>"); if (PsiUtil.isRawSubstitutor(staticFactory, inferredSubstitutor)) { - if (!JavaVersionService.getInstance().isAtLeast(newExpression, JavaSdkVersion.JDK_1_8) && - PsiUtil.skipParenthesizedExprUp(newExpression.getParent()) instanceof PsiExpressionList) { + //http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html#A999198 REF 7144506 + if (!PsiUtil.isLanguageLevel8OrHigher(newExpression) && PsiUtil.skipParenthesizedExprUp(newExpression.getParent()) instanceof PsiExpressionList) { for (PsiTypeParameter ignored : parameters) { result.addInferredType(PsiType.getJavaLangObject(newExpression.getManager(), GlobalSearchScope.allScope(newExpression.getProject()))); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/NotErasedReturnValueUnderJdk7.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/NotErasedReturnValueUnderJdk7.java new file mode 100644 index 000000000000..c2c898006bd4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/NotErasedReturnValueUnderJdk7.java @@ -0,0 +1,12 @@ +import java.util.*; + +class Test { + + void foo() { + set(new ArrayList<>(new Vector())); + } + + void set(List list) { + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java index faa15dc0412a..5c8f7b79a01e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -618,4 +618,8 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testUncheckedConversionInReturnType() throws Exception { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); } + + public void testNotErasedReturnValueUnderJdk7() throws Exception { + doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_8, false); + } }