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 53277ce348e8..cff23586365f 100644 --- a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java @@ -174,24 +174,9 @@ public class PsiDiamondTypeImpl extends PsiDiamondType { final String qualifier = qualifierElement != null ? qualifierElement.getText() : ""; final String qualifiedName = StringUtil.getQualifiedName(qualifier, text); if (newExpressionQualifier != null) { - final String newExpressionQualifierText = newExpressionQualifier.getText(); - if (newExpressionQualifier instanceof PsiReferenceExpression) { - final PsiVariable variable = resolveHelper.resolveReferencedVariable(newExpressionQualifierText, newExpression); - if (variable != null) { - final PsiClass aClass = PsiUtil.resolveClassInType(variable.getType()); - if (aClass != null) { - return aClass.findInnerClassByName(qualifiedName, false); - } - } - } else if (newExpressionQualifier instanceof PsiCallExpression) { - final JavaResolveResult resolveResult = ((PsiCallExpression)newExpressionQualifier).resolveMethodGenerics(); - final PsiElement method = resolveResult.getElement(); - if (method instanceof PsiMethod) { - final PsiClass aClass = PsiUtil.resolveClassInType(resolveResult.getSubstitutor().substitute(((PsiMethod)method).getReturnType())); - if (aClass != null) { - return aClass.findInnerClassByName(qualifiedName, false); - } - } + final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(newExpressionQualifier.getType()); + if (aClass != null) { + return aClass.findInnerClassByName(qualifiedName, false); } } return resolveHelper.resolveReferencedClass(qualifiedName, newExpression); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java index 7755d35f0c84..3b58bd85fb80 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java @@ -187,6 +187,10 @@ class Outer { } class Outer1 {} +class Outer2 { + class Inner2 {} +} + class Another { public static void main(String[] args) { Outer o = new Outer(); @@ -197,6 +201,8 @@ class Another { Outer.Inner i3 = m2().new Inner<>(); System.out.println(i); + + Outer2.Inner2 i5 = new Outer2<>().new Inner2<>(); } static Outer m() {return null;}