Skip to content

KDocSection

class KDocSection : KDocTag, ContributedReferenceHost, PsiLanguageInjectionHost

The part of a doc comment which describes a single class, method or property produced by the element being documented. For example, the doc comment of a class can have sections for the class itself, its primary constructor and each of the properties defined in the primary constructor.

Constructors

KDocSection

constructor(node: ASTNode)

Properties

allChildren

val PsiElement.allChildren: PsiChildRange

The range of all direct children of this element, or an empty range if it has none.

children

open override val children: @NotNull Array<out PsiElement>

containingFile

open override val containingFile: PsiFile?

context

open override val context: PsiElement?

endOffset

val PsiElement.endOffset: Int

The offset just past the end of this element's text range in the file.

firstChild

open override val firstChild: PsiElement?

isPhysical

open override val isPhysical: Boolean

isUserDataEmpty

isValid

open override val isValid: Boolean

isValidHost

open override fun isValidHost(): Boolean
open override val isValidHost: Boolean

isWritable

open override val isWritable: Boolean

knownTag

The KDocKnownTag this tag corresponds to, or null if the tag name is not recognized or this is the default section.

language

@get:NotNull
open override val language: Language

lastChild

open override val lastChild: PsiElement?

manager

open override val manager: PsiManagerEx?

name

open override val name: String?
@get:NotNull
open override val navigationElement: @NotNull PsiElement

nextLeafs

val PsiElement.nextLeafs: Sequence<PsiElement>

The following leaf elements as a lazy sequence, nearest first.

nextSibling

open override val nextSibling: PsiElement?

node

@get:NotNull
open override val node: @NotNull ASTNode

originalElement

open override val originalElement: PsiElement?

ownDeclarations

@get:NotNull
open val ownDeclarations: @NotNull Collection<out @NotNull PsiSymbolDeclaration>

ownReferences

@get:NotNull
open val ownReferences: @NotNull Collection<out @NotNull PsiSymbolReference>

parent

open override val parent: PsiElement?

parents

val PsiElement.parents: Sequence<PsiElement>

The ancestors of this element, from its immediate parent up to and including the containing file.

parentsWithSelf

val PsiElement.parentsWithSelf: Sequence<PsiElement>

This element and its ancestors, from the element itself up to and including the containing file.

presentation

open val presentation: ItemPresentation?

prevLeafs

val PsiElement.prevLeafs: Sequence<PsiElement>

The preceding leaf elements as a lazy sequence, nearest first.

prevSibling

open override val prevSibling: PsiElement?

project

@get:NotNull
open override val project: @NotNull Project

reference

open override val reference: PsiReference?

references

open override val references: Array<out PsiReference?>

resolveScope

@get:NotNull
open override val resolveScope: @NotNull GlobalSearchScope

startOffset

val PsiElement.startOffset: Int

The offset of the start of this element's text range in the file.

startOffsetInParent

open override val startOffsetInParent: Int

startOffsetSkippingComments

The start offset of this element, skipping leading comments and the whitespace that follows them.

text

open override val text: String?

textLength

open override val textLength: Int

textOffset

open override val textOffset: Int

textRange

open override val textRange: TextRange?

textRangeInParent

@get:Contract(pure = true)
@get:NotNull
open val textRangeInParent: @NotNull TextRange

textRangeWithoutComments

val PsiElement.textRangeWithoutComments: TextRange

The text range of this element excluding any leading comments.

userDataString

@get:TestOnly
open val userDataString: String?

userMap

@get:NotNull
open var userMap: @NotNull KeyFMap

useScope

@get:NotNull
open override val useScope: @NotNull SearchScope

Functions

accept

open fun accept(@NotNull visitor: @NotNull PsiElementVisitor)

acceptChildren

open fun acceptChildren(@NotNull visitor: @NotNull PsiElementVisitor)

add

open fun add(@NotNull element: @NotNull PsiElement): PsiElement?

addAfter

open fun addAfter(@NotNull element: @NotNull PsiElement, anchor: PsiElement?): PsiElement?

addBefore

open fun addBefore(@NotNull element: @NotNull PsiElement, anchor: PsiElement?): PsiElement?

addInternal

open fun addInternal(
    first: @NotNull ASTNode, 
    last: @NotNull ASTNode, 
    anchor: @Nullable ASTNode?, 
    before: @Nullable Boolean?
): ASTNode?

addRange

open fun addRange(first: PsiElement?, last: PsiElement?): PsiElement?

addRangeAfter

open fun addRangeAfter(
    first: PsiElement?, 
    last: PsiElement?, 
    anchor: PsiElement?
): PsiElement?

addRangeBefore

open fun addRangeBefore(
    @NotNull first: @NotNull PsiElement, 
    @NotNull last: @NotNull PsiElement, 
    anchor: PsiElement?
): PsiElement?

anyDescendantOfType

inline fun <reified T : PsiElement> PsiElement.anyDescendantOfType(noinline predicate: (T) -> Boolean = { true }): Boolean

Returns true if this element or any descendant of type T satisfies predicate.

inline fun <reified T : PsiElement> PsiElement.anyDescendantOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline predicate: (T) -> Boolean = { true }): Boolean

Returns true if this element or any descendant of type T satisfies predicate. canGoInside controls traversal into children but does not prevent the current element from being tested.

before

fun PsiElement.before(element: PsiElement): Boolean

Returns true if this element ends at or before element starts (that is, it precedes element in the file).

canNavigate

open fun canNavigate(): Boolean

canNavigateToSource

checkAdd

open fun checkAdd(@NotNull element: @NotNull PsiElement)

checkDecompiledText

fun PsiElement.checkDecompiledText()

Throws if this element belongs to a compiled file that is backed by a stub. Loading decompiled text is slow and should be avoided; stubs should be used instead. Called by the descendant-traversal helpers as a guard.

checkDelete

open fun checkDelete()

collectDescendantsOfType

inline fun <reified T : PsiElement> PsiElement.collectDescendantsOfType(noinline predicate: (T) -> Boolean = { true }): List<T>

Collects this element and all descendants of type T satisfying predicate into a list in post-order.

inline fun <reified T : PsiElement> PsiElement.collectDescendantsOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline predicate: (T) -> Boolean = { true }): List<T>

Collects this element and all descendants of type T satisfying predicate into a list in post-order. canGoInside controls traversal into children but does not prevent the current element from being collected.

collectDescendantsOfTypeTo

inline fun <reified T : PsiElement, C : MutableCollection<T>> PsiElement.collectDescendantsOfTypeTo(
    to: C, 
    crossinline canGoInside: (PsiElement) -> Boolean, 
    noinline predicate: (T) -> Boolean = { true }
): C

Adds this element and all descendants of type T satisfying predicate to to in post-order. canGoInside controls traversal into children but does not prevent the current element from being added.

copy

open fun copy(): PsiElement?

copyCopyableDataTo

open fun copyCopyableDataTo(clone: @NotNull UserDataHolderBase)

copyUserDataTo

open fun copyUserDataTo(other: @NotNull UserDataHolderBase)

createLiteralTextEscaper

open override fun createLiteralTextEscaper(): LiteralTextEscaper<out PsiLanguageInjectionHost>

delete

open fun delete()

deleteChildInternal

open fun deleteChildInternal(child: @NotNull ASTNode)

deleteChildRange

open fun deleteChildRange(first: PsiElement?, last: PsiElement?)

findDescendantOfType

inline fun <reified T : PsiElement> PsiElement.findDescendantOfType(noinline predicate: (T) -> Boolean = { true }): T?

Returns the first element of type T in a pre-order traversal of this element and its descendants that satisfies predicate, or null if there is none.

inline fun <reified T : PsiElement> PsiElement.findDescendantOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline predicate: (T) -> Boolean = { true }): T?

Returns the first element of type T in a pre-order traversal of this element and its descendants that satisfies predicate, or null. canGoInside controls traversal into children but does not prevent the current element from being tested.

findElementAt

open fun findElementAt(offset: Int): PsiElement?

findReferenceAt

open fun findReferenceAt(offset: Int): PsiReference?

findTagByName

Returns the first tag in this section whose name equals the given name (without the leading @), or null if there is none.

findTagsByName

Returns all tags in this section whose name equals the given name (without the leading @), in source order.

forEachDescendantOfType

inline fun <reified T : PsiElement> PsiElement.forEachDescendantOfType(noinline action: (T) -> Unit)

Applies action to this element and every descendant of type T, in post-order (children before parents).

inline fun <reified T : PsiElement> PsiElement.forEachDescendantOfType(crossinline canGoInside: (PsiElement) -> Boolean, noinline action: (T) -> Unit)

Applies action to this element and every descendant of type T, in post-order. canGoInside controls whether each visited element's children are traversed; the element itself is still passed to action when it is a T, even if canGoInside returns false for it.

forEachDescendantOfTypeInPreorder

inline fun <reified T : PsiElement> PsiElement.forEachDescendantOfTypeInPreorder(noinline action: (T) -> Unit)

Applies action to this element and every descendant of type T, in pre-order (parents before children).

inline fun <reified T : PsiElement> PsiElement.forEachDescendantOfTypeInPreorder(crossinline canGoInside: (PsiElement) -> Boolean, noinline action: (T) -> Unit)

Applies action to this element and every descendant of type T, in pre-order. canGoInside controls whether each visited element's children are traversed; the element itself is still passed to action when it is a T, even if canGoInside returns false for it.

getAssignmentLhsIfUnwrappable

fun PsiElement.getAssignmentLhsIfUnwrappable(): PsiElement?

Returns the operand this operation applies to, but only when that operand is wrapped in parentheses, a label, or annotations; returns null otherwise.

getChildOfType

inline fun <reified T : PsiElement> PsiElement.getChildOfType(): T?

Returns the first direct child of type T, or null if there is none.

getChildren

open fun getChildren(): @NotNull Array<out PsiElement>

getChildrenOfType

inline fun <reified T : PsiElement> PsiElement.getChildrenOfType(): Array<T>

Returns the direct children of type T, or an empty array if there are none.

getContainingFile

open fun getContainingFile(): PsiFile?

getContent

open override fun getContent(): String

Returns the content of this tag (all text following the tag name and the subject if present, with leading asterisks removed).

getContext

open fun getContext(): PsiElement?

getCopyableUserData

open fun <T> getCopyableUserData(@NotNull key: @NotNull Key<T?>): T?

getElementTextWithContext

fun PsiElement.getElementTextWithContext(): String

Returns this element's text with surrounding source context, for use in diagnostics and log messages.

getExplicitReceiverOfDotQualified

fun PsiElement.getExplicitReceiverOfDotQualified(): PsiElement?

Returns the source of the explicit receiver if this element is a dot-qualified expression, or null otherwise.

getFirstChild

open fun getFirstChild(): PsiElement?

getIcon

@Nullable
open fun getIcon(flags: Int): @Nullable Icon?

getLanguage

@NotNull
open fun getLanguage(): Language

getLastChild

open fun getLastChild(): PsiElement?

getLastParentOfTypeInRow

inline fun <reified T : PsiElement> PsiElement.getLastParentOfTypeInRow(): T?

Returns the outermost element in an uninterrupted chain of ancestors of type T, or null if the parent is not a T.

getLastParentOfTypeInRowWithSelf

inline fun <reified T : PsiElement> PsiElement.getLastParentOfTypeInRowWithSelf(): T?

Like getLastParentOfTypeInRow, but the chain may start at this element itself.

getManager

open fun getManager(): PsiManagerEx?

getName

open override fun getName(): String?

Returns the name of the section (the name of the doc tag introducing the section, or null for the default section).

getNavigationElement

@NotNull
open fun getNavigationElement(): @NotNull PsiElement

getNextSibling

open fun getNextSibling(): PsiElement?

getNextSiblingIgnoringWhitespace

fun PsiElement.getNextSiblingIgnoringWhitespace(withItself: Boolean = false): PsiElement?

Returns the next sibling that is not whitespace, or null. Considers this element if withItself.

getNextSiblingIgnoringWhitespaceAndComments

fun PsiElement.getNextSiblingIgnoringWhitespaceAndComments(withItself: Boolean = false): PsiElement?

Returns the next sibling that is neither whitespace nor a comment, or null. Considers this element if withItself.

getNode

@NotNull
open fun getNode(): @NotNull ASTNode

getNonStrictParentOfType

inline fun <reified T : PsiElement> PsiElement.getNonStrictParentOfType(): T?

Returns the nearest ancestor of type T including this element, or null if there is none.

fun <T : PsiElement> PsiElement.getNonStrictParentOfType(parentClass: Class<T>): T?

Returns the nearest ancestor of type T (including this element), or null if there is none.

getOriginalElement

open fun getOriginalElement(): PsiElement?

getOutermostParentContainedIn

tailrec fun PsiElement.getOutermostParentContainedIn(container: PsiElement): PsiElement?

Returns the outermost element on the path from this element that is still strictly contained in container, or null.

getParent

open fun getParent(): PsiElement?

getParentOfType

inline fun <reified T : PsiElement> PsiElement.getParentOfType(strict: Boolean): T?

Returns the nearest ancestor of type T, or null. When strict is false, this element itself is also considered.

inline fun <reified T : PsiElement> PsiElement.getParentOfType(strict: Boolean, vararg stopAt: Class<out PsiElement>): T?

Returns the nearest ancestor of type T, stopping the search once an ancestor of any type in stopAt is reached, or null. When strict is false, this element itself is also considered.

getParentOfTypeAndBranch

inline fun <reified T : PsiElement> PsiElement.getParentOfTypeAndBranch(strict: Boolean = false, noinline branch: T.() -> PsiElement?): T?

Checks the nearest element of type T and returns it if this element lies within the subtree selected by branch. If that candidate's branch does not contain this element, returns null without checking higher ancestors. When strict is false, this element itself is also considered as the candidate.

getParentOfTypeAndBranches

inline fun <reified T : PsiElement> PsiElement.getParentOfTypeAndBranches(strict: Boolean = false, noinline branches: T.() -> Iterable<PsiElement?>): T?

Checks the nearest element of type T and returns it if this element lies within any subtree selected by branches. If none of that candidate's branches contain this element, returns null without checking higher ancestors. When strict is false, this element itself is also considered as the candidate.

getParentOfTypes

fun <T : PsiElement> PsiElement.getParentOfTypes(strict: Boolean = false, vararg parentClasses: Class<out T>): T?

Returns the nearest ancestor that is an instance of one of parentClasses, or null if there is none. When strict is false, this element itself is also considered.

getParentOfTypes2

inline fun <reified T : PsiElement, reified V : PsiElement> PsiElement.getParentOfTypes2(): PsiElement?

Returns the nearest strict ancestor that is a T or V, or null if there is none.

getParentOfTypes3

inline fun <reified T : PsiElement, reified V : PsiElement, reified U : PsiElement> PsiElement.getParentOfTypes3(): PsiElement?

Returns the nearest strict ancestor that is a T, V, or U, or null if there is none.

getParentOfTypesAndPredicate

fun <T : PsiElement> PsiElement.getParentOfTypesAndPredicate(
    strict: Boolean = false, 
    vararg parentClasses: Class<out T>, 
    predicate: (T) -> Boolean
): T?

Returns the nearest ancestor that is an instance of one of parentClasses and satisfies predicate, or null. When parentClasses is empty, any type matches. When strict is false, this element itself is also considered.

getPrevSibling

open fun getPrevSibling(): PsiElement?

getPrevSiblingIgnoringWhitespace

fun PsiElement.getPrevSiblingIgnoringWhitespace(withItself: Boolean = false): PsiElement?

Returns the previous sibling that is not whitespace, or null. Considers this element if withItself.

getPrevSiblingIgnoringWhitespaceAndComments

fun PsiElement.getPrevSiblingIgnoringWhitespaceAndComments(withItself: Boolean = false): PsiElement?

Returns the previous sibling that is neither whitespace nor a comment, or null. Considers this element if withItself.

getProject

@NotNull
open fun getProject(): @NotNull Project

getReference

open override fun getReference(): PsiReference?

getReferences

open override fun getReferences(): Array<out PsiReference?>

getResolveScope

@NotNull
open fun getResolveScope(): @NotNull GlobalSearchScope

getStartOffsetIn

fun PsiElement.getStartOffsetIn(ancestor: PsiElement): Int

Returns the offset of this element relative to the start of ancestor (which must be an ancestor of this element).

getStartOffsetInParent

getStrictParentOfType

inline fun <reified T : PsiElement> PsiElement.getStrictParentOfType(): T?

Returns the nearest strict ancestor of type T, or null if there is none.

Returns the link naming the entity documented by this tag (for example, the parameter name after @param), or null if this tag has no subject.

getSubjectName

open override fun getSubjectName(): String?

Returns the name of the entity documented by this tag (for example, the name of the parameter for the @param tag), or null if this tag does not document any specific entity.

getText

open fun getText(): String?

getTextLength

open fun getTextLength(): Int

getTextOffset

open fun getTextOffset(): Int

getTextRange

open fun getTextRange(): TextRange?

getTextWithLocation

fun PsiElement.getTextWithLocation(): String

Returns this element's text together with its source location, for use in diagnostics and log messages.

getTopmostParentOfType

inline fun <reified T : PsiElement> PsiElement.getTopmostParentOfType(): T?

Returns the outermost ancestor of type T including this element, or null if there is none.

getUserData

open fun <T> getUserData(@NotNull key: @NotNull Key<T?>): T?

getUseScope

@NotNull
open fun getUseScope(): @NotNull SearchScope

isAncestor

fun PsiElement?.isAncestor(element: PsiElement, strict: Boolean = false): Boolean

Returns true if this element is an ancestor of element. When strict is false, an element is its own ancestor.

isCopyableDataEqual

open fun isCopyableDataEqual(other: @NotNull UserDataHolderBase): Boolean

isEquivalentTo

open fun isEquivalentTo(another: PsiElement?): Boolean

isExtensionDeclaration

fun PsiElement.isExtensionDeclaration(): Boolean

Returns true if this element is an extension function or property (that is, it declares a receiver).

isFunctionalExpression

fun PsiElement.isFunctionalExpression(): Boolean

Returns true if this element is an anonymous function, such as the fun expression in val predicate = fun(x: Int): Boolean = x > 0.

isInsideOf

fun PsiElement.isInsideOf(elements: Iterable<PsiElement>): Boolean

Returns true if this element lies within, or is equal to, any of the given elements.

isPhysical

open fun isPhysical(): Boolean

isTopLevelKtOrJavaMember

fun PsiElement.isTopLevelKtOrJavaMember(): Boolean

Returns true if this element is a top-level member of a Kotlin file or a top-level Java class.

isValid

open fun isValid(): Boolean

isWritable

open fun isWritable(): Boolean
open fun navigate(requestFocus: Boolean)
open fun navigationRequest(): @Nullable NavigationRequest?

nextLeaf

fun PsiElement.nextLeaf(skipEmptyElements: Boolean = false): PsiElement?

Returns the next leaf element in the tree, or null if there is none. Empty leaves are skipped if skipEmptyElements.

fun PsiElement.nextLeaf(filter: (PsiElement) -> Boolean): PsiElement?

Returns the nearest following leaf that satisfies filter, or null if there is none.

parameterIndex

fun PsiElement.parameterIndex(): Int

Returns the index of this parameter within its own parameter list (Kotlin or Java), or -1 if it is not a parameter.

prevLeaf

fun PsiElement.prevLeaf(skipEmptyElements: Boolean = false): PsiElement?

Returns the previous leaf element in the tree, or null if there is none. Empty leaves are skipped if skipEmptyElements.

fun PsiElement.prevLeaf(filter: (PsiElement) -> Boolean): PsiElement?

Returns the nearest preceding leaf that satisfies filter, or null if there is none.

processDeclarations

open fun processDeclarations(
    @NotNull processor: @NotNull PsiScopeProcessor, 
    @NotNull state: @NotNull ResolveState, 
    lastParent: PsiElement?, 
    @NotNull place: @NotNull PsiElement
): Boolean

putCopyableUserData

open fun <T> putCopyableUserData(@NotNull key: @NotNull Key<T?>, value: T?)

putUserData

open fun <T> putUserData(@NotNull key: @NotNull Key<T?>, @Nullable value: @Nullable T?)

putUserDataIfAbsent

open fun <T> putUserDataIfAbsent(key: @NotNull Key<T?>, value: @NotNull T & Any): @NotNull T & Any

replace

open fun replace(@NotNull newElement: @NotNull PsiElement): PsiElement?
open fun <T> replace(
    key: @NotNull Key<T?>, 
    oldValue: @Nullable T?, 
    newValue: @Nullable T?
): Boolean

replaceChildInternal

open fun replaceChildInternal(child: PsiElement?, newElement: TreeElement?)

siblings

fun PsiElement.siblings(forward: Boolean = true, withItself: Boolean = true): Sequence<PsiElement>

Returns the siblings of this element as a lazy sequence, going forward (or backward) and optionally including the element itself (withItself).

startsWithComment

fun PsiElement.startsWithComment(): Boolean

Returns true if this element's first child is a comment.

subtreeChanged

open fun subtreeChanged()

textContains

open fun textContains(c: Char): Boolean

textMatches

open fun textMatches(@NotNull text: @NotNull CharSequence): Boolean
open fun textMatches(@NotNull element: @NotNull PsiElement): Boolean

textToCharArray

open fun textToCharArray(): @NotNull CharArray

toString

open fun toString(): String

unwrapParenthesesLabelsAndAnnotations

fun PsiElement?.unwrapParenthesesLabelsAndAnnotations(): PsiElement?

Recursively unwraps this element while it is a parenthesized, labeled, or annotated expression, returning the innermost base element. A non-wrapper element is returned unchanged.

unwrapParenthesesLabelsAndAnnotationsDeeply

fun PsiElement.unwrapParenthesesLabelsAndAnnotationsDeeply(): PsiElement

Walks up through immediately enclosing parentheses, labels, and annotations, returning the first parent outside that wrapper chain.

updateText

open override fun updateText(text: String): PsiLanguageInjectionHost