KT-4274 #Fixed
This commit is contained in:
@@ -57,6 +57,25 @@ fun PsiElement.getParentByTypeAndPredicate<T: PsiElement>(
|
||||
return null
|
||||
}
|
||||
|
||||
fun PsiElement.getParentByTypesAndPredicate<T: PsiElement>(
|
||||
strict : Boolean = false, vararg parentClasses : Class<T>, predicate: (T) -> Boolean
|
||||
) : T? {
|
||||
var element = if (strict) getParent() else this
|
||||
while (element != null) {
|
||||
[suppress("UNCHECKED_CAST")]
|
||||
when {
|
||||
parentClasses.any {parentClass -> parentClass.isInstance(element)} && predicate(element!! as T) ->
|
||||
return element as T
|
||||
element is PsiFile ->
|
||||
return null
|
||||
else ->
|
||||
element = element!!.getParent()
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
fun PsiElement.getParentByType<T: PsiElement>(parentClass : Class<T>, strict : Boolean = false) : T? {
|
||||
return PsiTreeUtil.getParentOfType(this, parentClass, strict)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user