org.jetbrains.kotlin.analysis.utils.printer.psiUtils.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlin-annotation-processing Show documentation
Show all versions of kotlin-annotation-processing Show documentation
Annotation Processor for Kotlin
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.utils.printer
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.psi.psiUtil.parents
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
public inline fun PsiElement.parentOfType(withSelf: Boolean = false): T? {
return PsiTreeUtil.getParentOfType(this, T::class.java, !withSelf)
}
public fun PsiElement.parentsOfType(clazz: Class, withSelf: Boolean = true): Sequence {
return (if (withSelf) parentsWithSelf else parents).filterIsInstance(clazz)
}
public inline fun PsiElement.parentsOfType(withSelf: Boolean = true): Sequence =
parentsOfType(T::class.java, withSelf)