diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java index 5d370dc4b2fc..9993012d65c6 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java @@ -15,7 +15,6 @@ */ package com.intellij.psi.util; -import com.intellij.lang.ASTNode; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Condition; @@ -202,12 +201,12 @@ public class PsiTypesUtil { qualifierType = TypeConversionUtil.erasure(qualifier.getType()); } else if (condition != null) { - ASTNode parent = call.getNode().getTreeParent(); - while (parent != null && condition.value(parent.getElementType())) { - parent = parent.getTreeParent(); + PsiElement parent = call.getContext(); + while (parent != null && condition.value(parent.getNode().getElementType())) { + parent = parent.getContext(); } if (parent != null) { - qualifierType = JavaPsiFacade.getInstance(project).getElementFactory().createType((PsiClass)parent.getPsi()); + qualifierType = JavaPsiFacade.getInstance(project).getElementFactory().createType((PsiClass)parent); } } return createJavaLangClassType(methodExpression, qualifierType, true); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2var/beforeCapture.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2var/beforeCapture.java new file mode 100644 index 000000000000..a0db61e96ef6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/explicit2var/beforeCapture.java @@ -0,0 +1,13 @@ +// "Replace explicit type with 'var'" "false" +import java.util.List; + +class Program { + void getRidOfType() { + List list = getList(getClass()); + list = getList(Integer.class); + } + + public static List getList(Class clazz) { + return null; + } +} \ No newline at end of file