Avoid counting directory parent for file

This commit is contained in:
Nikolay Krasko
2015-07-08 16:26:17 +03:00
parent 77c0a54a79
commit 7386ea0d0b
2 changed files with 9 additions and 1 deletions
@@ -373,8 +373,13 @@ public class JetPsiUtil {
@Nullable
@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);
if (answer instanceof PsiFile) return answer;
do {
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.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.psi.util.CachedValueProvider
import com.intellij.psi.util.CachedValuesManager
import com.intellij.psi.util.PsiModificationTracker
@@ -195,6 +196,8 @@ private object KotlinResolveDataProvider {
)
fun findAnalyzableParent(element: JetElement): JetElement {
if (element is JetFile) return element
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,
// object expressions inside arguments of super constructors of classes (note that classes themselves are not topmost elements)