From 3b46b4c3bfdbd03db0addb776323db3933f1e54d Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 13 Apr 2016 17:00:16 +0200 Subject: [PATCH] method refs: ensure that qualifier type corresponds to ReferenceType for ReferenceType::Identifier --- .../com/intellij/psi/PsiMethodReferenceUtil.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java b/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java index 195a064cce28..d7dd65617656 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java @@ -58,25 +58,20 @@ public class PsiMethodReferenceUtil { @Nullable public static PsiType getQualifierType(PsiMethodReferenceExpression expression) { - PsiType qualifierType = null; final PsiTypeElement typeElement = expression.getQualifierType(); if (typeElement != null) { - qualifierType = typeElement.getType(); + return typeElement.getType(); } else { + PsiType qualifierType = null; final PsiElement qualifier = expression.getQualifier(); if (qualifier instanceof PsiExpression) { qualifierType = ((PsiExpression)qualifier).getType(); } - } - if (qualifierType == null) { - final QualifierResolveResult qualifierResolveResult = getQualifierResolveResult(expression); - final PsiClass containingClass = qualifierResolveResult.getContainingClass(); - if (containingClass == null) { - return null; + if (qualifierType == null && qualifier instanceof PsiReferenceExpression) { + return JavaPsiFacade.getElementFactory(expression.getProject()).createType((PsiReferenceExpression)qualifier); } - qualifierType = JavaPsiFacade.getElementFactory(expression.getProject()).createType(containingClass); + return qualifierType; } - return qualifierType; } public static boolean isReturnTypeCompatible(PsiMethodReferenceExpression expression,