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 990a91642079..e1116894f14f 100644 --- a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java @@ -164,6 +164,11 @@ public class PsiDiamondTypeImpl extends PsiDiamondType { final PsiJavaCodeReferenceElement classOrAnonymousClassReference = newExpression.getClassOrAnonymousClassReference(); LOG.assertTrue(classOrAnonymousClassReference != null); final DiamondInferenceResult result = new DiamondInferenceResult(classOrAnonymousClassReference.getReferenceName() + "<>"); + + if (PsiUtil.isRawSubstitutor(staticFactory, inferredSubstitutor)) { + return result; + } + for (PsiTypeParameter parameter : parameters) { for (PsiTypeParameter classParameter : classParameters) { if (Comparing.strEqual(classParameter.getName(), parameter.getName())) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/RawSubstitutor.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/RawSubstitutor.java new file mode 100644 index 000000000000..6c60f2909093 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/RawSubstitutor.java @@ -0,0 +1,6 @@ +import java.util.*; + +class Sample { + public static List getList() {return null;} + List list = new ArrayList<>(getList()); +} 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 c508ad52b691..a3b60429e297 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java @@ -101,6 +101,7 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase { public void testMultipleConstructors() { doTest(false, false); } public void testHighlightInaccessibleFromClassModifierList() { doTest(false, false); } public void testInnerInTypeArguments() { doTest(false, false); } + public void testRawSubstitutor() { doTest(false, false); } public void testIncompleteDiamonds() throws Exception { doTest(false, false);