do not suggest to replace with diamond for anonymous inner class (IDEA-70258)

This commit is contained in:
anna
2011-05-26 19:22:41 +04:00
parent 8d61f83fd4
commit 4d1a5f247b
2 changed files with 15 additions and 8 deletions
@@ -0,0 +1,7 @@
// "Replace with <>" "false"
class Test {
class DiamondTest<T> {
DiamondTest<String> s = new DiamondTest<St<caret>ring>(){
}; // anonymous inner class
}
}
@@ -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;