diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2diamond/beforeInAnonymousInner.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2diamond/beforeInAnonymousInner.java new file mode 100644 index 000000000000..8f4027846572 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2diamond/beforeInAnonymousInner.java @@ -0,0 +1,7 @@ +// "Replace with <>" "false" +class Test { + class DiamondTest { + DiamondTest s = new DiamondTestring>(){ + }; // anonymous inner class + } +} diff --git a/java/openapi/src/com/intellij/psi/PsiDiamondType.java b/java/openapi/src/com/intellij/psi/PsiDiamondType.java index 377488e499c8..f657fe15aef8 100644 --- a/java/openapi/src/com/intellij/psi/PsiDiamondType.java +++ b/java/openapi/src/com/intellij/psi/PsiDiamondType.java @@ -92,14 +92,6 @@ public class PsiDiamondType extends PsiType { return PsiDiamondType.DiamondInferenceResult.NULL_RESULT; } - final PsiAnonymousClass anonymousClass = newExpression.getAnonymousClass(); - if (anonymousClass != null) { - final PsiElement resolve = anonymousClass.getBaseClassReference().resolve(); - if (resolve instanceof PsiClass && ((PsiClass)resolve).getContainingClass() != null) { - return PsiDiamondType.DiamondInferenceResult.ANONYMOUS_INNER_RESULT; - } - - } return resolveInferredTypes(newExpression); } @@ -109,6 +101,14 @@ public class PsiDiamondType extends PsiType { public static DiamondInferenceResult resolveInferredTypes(PsiNewExpression newExpression, PsiElement context) { + final PsiAnonymousClass anonymousClass = newExpression.getAnonymousClass(); + if (anonymousClass != null) { + final PsiElement resolve = anonymousClass.getBaseClassReference().resolve(); + if (resolve instanceof PsiClass && ((PsiClass)resolve).getContainingClass() != null) { + return PsiDiamondType.DiamondInferenceResult.ANONYMOUS_INNER_RESULT; + } + } + final PsiReferenceParameterList referenceParameterList = PsiTreeUtil.getChildOfType(newExpression, PsiReferenceParameterList.class); if (referenceParameterList != null && referenceParameterList.getTypeParameterElements().length > 0) { return DiamondInferenceResult.EXPLICIT_CONSTRUCTOR_TYPE_ARGS;