[FIR] Add some helper functions for dynamics
This commit is contained in:
@@ -6,6 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.KtSourceElement
|
import org.jetbrains.kotlin.KtSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression
|
import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression
|
||||||
@@ -45,6 +47,15 @@ inline val FirCall.arguments: List<FirExpression> get() = argumentList.arguments
|
|||||||
|
|
||||||
inline val FirCall.argument: FirExpression get() = argumentList.arguments.first()
|
inline val FirCall.argument: FirExpression get() = argumentList.arguments.first()
|
||||||
|
|
||||||
|
inline val FirCall.dynamicVararg: FirVarargArgumentsExpression?
|
||||||
|
get() = arguments.firstOrNull() as? FirVarargArgumentsExpression
|
||||||
|
|
||||||
|
inline val FirCall.dynamicVarargArguments: List<FirExpression>?
|
||||||
|
get() = dynamicVararg?.arguments
|
||||||
|
|
||||||
|
inline val FirFunctionCall.isCalleeDynamic: Boolean
|
||||||
|
get() = (calleeReference.resolvedSymbol?.fir as? FirFunction)?.origin == FirDeclarationOrigin.DynamicScope
|
||||||
|
|
||||||
inline val FirCall.resolvedArgumentMapping: Map<FirExpression, FirValueParameter>?
|
inline val FirCall.resolvedArgumentMapping: Map<FirExpression, FirValueParameter>?
|
||||||
get() = when (val argumentList = argumentList) {
|
get() = when (val argumentList = argumentList) {
|
||||||
is FirResolvedArgumentList -> argumentList.mapping
|
is FirResolvedArgumentList -> argumentList.mapping
|
||||||
|
|||||||
Reference in New Issue
Block a user