KaForLoopCall¶
@SubclassOptInRequired(markerClass = [KaImplementationDetail::class])
interface KaForLoopCall : KaMultiCall, KaCall
Represents a resolved for loop, which desugars into three operator calls: iterator(), hasNext(), and next().
Example¶
A for loop over list desugars to:
val iterator = list.iterator()
while (iterator.hasNext()) {
val item = iterator.next()
println(item)
}
See also¶
Properties¶
calls¶
abstract val calls: List<KaSimpleCall<*, *>>
The non-empty list of KaSimpleCalls that were discovered during resolution of KtResolvableCall
calls¶
val KaCallInfo.calls: List<KaCall>
The list of KaCalls associated with the KaCallInfo. The list contains a single KaCall in case of a successful call, but may contain multiple candidates in case of an error call.
The flattened list of resolved calls.
-
KaSimpleCallResolutionSuccess: the resolvedcallas a single-element list. -
KaMultiCallResolutionAttempt: the assembledcallif all sub-calls succeeded, or the combined calls from individualsimpleAttemptsotherwise.
val KaSimpleOrMultiCall.calls: List<KaSimpleCall<*, *>>
The flattened list of KaSimpleCalls.
-
If
thisis an instance ofKaSimpleCall, the list will contain onlythiscall -
If
thisis an instance ofKaMultiCall, the list will containKaMultiCall.calls
constructor¶
this call as a call to a constructor, or null if it is not a constructor call.
Example
Both the Foo() call and the @Anno annotation entry are constructor calls, so constructor returns the call itself.
See also
function¶
val KaSimpleOrMultiCall.function: KaFunctionCall<*>?
this call as a KaFunctionCall, or null if it is not a call to a function.
Example
For function(), function is the call to function. For int, which is a KaVariableAccessCall, function is null.
See also
hasNextCall¶
abstract val hasNextCall: KaFunctionCall<KaNamedFunctionSymbol>
The hasNext() call on the iterator.
iteratorCall¶
abstract val iteratorCall: KaFunctionCall<KaNamedFunctionSymbol>
The iterator() call on the loop range expression.
nextCall¶
abstract val nextCall: KaFunctionCall<KaNamedFunctionSymbol>
The next() call on the iterator.
simple¶
val KaSimpleOrMultiCall.simple: KaSimpleCall<*, *>?
this call as a KaSimpleCall, or null if it is a KaMultiCall.
Example
For int = 2, simple is the write access to int. For int++, which is a KaMultiCall, simple is null.
See also
symbols¶
The flattened list of KaSymbols for the resolved calls.
-
If
thisis an instance ofKaSimpleCall, the list will contain only theKaSimpleCall.signature's symbol -
If
thisis an instance ofKaMultiCall, the list will contain symbols from allKaMultiCall.calls
A list of KaSymbol.
-
If
thisis an instance ofKaSimpleSymbolResolutionSuccess, the list will containKaSimpleSymbolResolutionSuccess.symbols. -
If
thisis an instance ofKaSimpleSymbolResolutionError, the list will containKaSimpleSymbolResolutionError.candidateSymbols. -
If
thisis an instance ofKaCompoundSymbolResolutionError, the list will contain the combined symbols from all attempts.
See also
token¶
abstract val token: KaLifetimeToken
The KaLifetimeToken which determines the lifetime of the lifetime owner.
variable¶
this call as a KaVariableAccessCall, or null if it is not an access to a variable.
Example
For int, variable is the read access to int. For function(), which is a KaFunctionCall, variable is null.
See also
Functions¶
assertIsValidAndAccessible¶
inline fun KaLifetimeOwner.assertIsValidAndAccessible()
isValid¶
fun KaLifetimeOwner.isValid(): Boolean
Whether the lifetime owner is still valid, i.e. we are still in the scope of the lifetime owner's regular lifetime.
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.