From 4d1a5f247bd8ce8f895a62e2f5cc21a5d8301965 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 26 May 2011 18:23:19 +0400 Subject: [PATCH] do not suggest to replace with diamond for anonymous inner class (IDEA-70258) --- .../explicit2diamond/beforeInAnonymousInner.java | 7 +++++++ .../src/com/intellij/psi/PsiDiamondType.java | 16 ++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2diamond/beforeInAnonymousInner.java 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;