From 0ba945c96e8849b21f7e3b244811ec7ef44d9955 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 30 Oct 2013 10:02:24 +0100 Subject: [PATCH] new inference: method refs: do not provide raw substitutor when containing class provides empty one --- .../src/com/intellij/psi/PsiMethodReferenceUtil.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 df72de732a5d..522ce8013853 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiMethodReferenceUtil.java @@ -131,7 +131,10 @@ public class PsiMethodReferenceUtil { if (resolve instanceof PsiClass) { containingClass = (PsiClass)resolve; substitutor = resolveResult.getSubstitutor(); - return new QualifierResolveResult(containingClass, substitutor, true); + final PsiElement element = methodReferenceExpression.getReferenceNameElement(); + final boolean isConstructor = element instanceof PsiKeyword && PsiKeyword.NEW.equals(element.getText()); + final boolean isRawSubst = (!isConstructor && PsiTreeUtil.isAncestor(containingClass, methodReferenceExpression, true)) && PsiUtil.isRawSubstitutor(containingClass, substitutor); + return new QualifierResolveResult(containingClass, isRawSubst ? PsiSubstitutor.EMPTY : substitutor, true); } } }