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); } } }