From 0bc34a9e5aa91cd300869b946f0688834dde6d6c Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Wed, 30 Mar 2022 14:41:18 +0300 Subject: [PATCH] [FIR] Add some helper functions for dynamics --- .../kotlin/fir/expressions/FirExpressionUtil.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt index 4da07e16576..dde0520919b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.fir.expressions 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.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression @@ -45,6 +47,15 @@ inline val FirCall.arguments: List get() = argumentList.arguments inline val FirCall.argument: FirExpression get() = argumentList.arguments.first() +inline val FirCall.dynamicVararg: FirVarargArgumentsExpression? + get() = arguments.firstOrNull() as? FirVarargArgumentsExpression + +inline val FirCall.dynamicVarargArguments: List? + get() = dynamicVararg?.arguments + +inline val FirFunctionCall.isCalleeDynamic: Boolean + get() = (calleeReference.resolvedSymbol?.fir as? FirFunction)?.origin == FirDeclarationOrigin.DynamicScope + inline val FirCall.resolvedArgumentMapping: Map? get() = when (val argumentList = argumentList) { is FirResolvedArgumentList -> argumentList.mapping