Avoid counting directory parent for file
This commit is contained in:
@@ -373,8 +373,13 @@ public class JetPsiUtil {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Contract("null, _ -> null")
|
@Contract("null, _ -> null")
|
||||||
public static PsiElement getTopmostParentOfTypes(@Nullable PsiElement element, @NotNull Class<? extends PsiElement>... parentTypes) {
|
public static PsiElement getTopmostParentOfTypes(
|
||||||
|
@Nullable PsiElement element,
|
||||||
|
@NotNull Class<? extends PsiElement>... parentTypes) {
|
||||||
|
if (element instanceof PsiFile) return null;
|
||||||
|
|
||||||
PsiElement answer = PsiTreeUtil.getParentOfType(element, parentTypes);
|
PsiElement answer = PsiTreeUtil.getParentOfType(element, parentTypes);
|
||||||
|
if (answer instanceof PsiFile) return answer;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
PsiElement next = PsiTreeUtil.getParentOfType(answer, parentTypes);
|
PsiElement next = PsiTreeUtil.getParentOfType(answer, parentTypes);
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.intellij.openapi.project.DumbService
|
|||||||
import com.intellij.openapi.project.IndexNotReadyException
|
import com.intellij.openapi.project.IndexNotReadyException
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.psi.util.CachedValueProvider
|
import com.intellij.psi.util.CachedValueProvider
|
||||||
import com.intellij.psi.util.CachedValuesManager
|
import com.intellij.psi.util.CachedValuesManager
|
||||||
import com.intellij.psi.util.PsiModificationTracker
|
import com.intellij.psi.util.PsiModificationTracker
|
||||||
@@ -195,6 +196,8 @@ private object KotlinResolveDataProvider {
|
|||||||
)
|
)
|
||||||
|
|
||||||
fun findAnalyzableParent(element: JetElement): JetElement {
|
fun findAnalyzableParent(element: JetElement): JetElement {
|
||||||
|
if (element is JetFile) return element
|
||||||
|
|
||||||
val topmostElement = JetPsiUtil.getTopmostParentOfTypes(element, *topmostElementTypes) as JetElement?
|
val topmostElement = JetPsiUtil.getTopmostParentOfTypes(element, *topmostElementTypes) as JetElement?
|
||||||
// parameters and supertype lists are not analyzable by themselves, but if we don't count them as topmost, we'll stop inside, say,
|
// parameters and supertype lists are not analyzable by themselves, but if we don't count them as topmost, we'll stop inside, say,
|
||||||
// object expressions inside arguments of super constructors of classes (note that classes themselves are not topmost elements)
|
// object expressions inside arguments of super constructors of classes (note that classes themselves are not topmost elements)
|
||||||
|
|||||||
Reference in New Issue
Block a user