Skip to content

KaSubstitutor

A type substitutor which performs a substitution of type parameters inside a type to another type. The substitution can usually be represented as a map from type parameters to their corresponding substitution types.

A substitutor can be built using buildSubstitutor or retrieved via a KaCall.

Example

substitutor = { T -> Int, S -> Long }
substitute(Map<T, S>, substitutor) = Map<Int, Long>

Inheritors

Types

Empty

A KaSubstitutor with an empty type mapping. It does not perform any substitution.

Properties

token

abstract val token: KaLifetimeToken

The KaLifetimeToken which determines the lifetime of the lifetime owner.

Functions

assertIsValidAndAccessible

isValid

Whether the lifetime owner is still valid, i.e. we are still in the scope of the lifetime owner's regular lifetime.

substitute

open fun substitute(type: KaType): KaType

Substitutes the type parameters in type using the substitutor's type mapping.

Return

The substituted type if there was at least one substitution, or type itself otherwise.

substituteOrNull

abstract fun substituteOrNull(type: KaType): KaType?

Substitutes the type parameters in type using the substitutor's type mapping.

Return

The substituted type if there was at least one substitution, or null otherwise.

withValidityAssertion

inline fun <R> KaLifetimeOwner.withValidityAssertion(action: () -> R): R

Executes action only if the KaLifetimeOwner is still valid and accessible. Otherwise, throws a validity exception based on the concrete violation.