K2 Scripting: add support for script args to FIR part

This commit is contained in:
Ilya Chernikov
2022-11-22 17:30:59 +01:00
committed by Space Team
parent 533a5671bc
commit a89dfdce03
16 changed files with 78 additions and 20 deletions
@@ -29,6 +29,7 @@ abstract class FirScript : FirDeclaration() {
abstract val name: Name
abstract val statements: List<FirStatement>
abstract override val symbol: FirScriptSymbol
abstract val parameters: List<FirVariable>
abstract val contextReceivers: List<FirContextReceiver>
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitScript(this, data)
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirScript
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.impl.FirScriptImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirStatement
@@ -41,6 +42,7 @@ class FirScriptBuilder : FirAnnotationContainerBuilder {
lateinit var name: Name
val statements: MutableList<FirStatement> = mutableListOf()
lateinit var symbol: FirScriptSymbol
val parameters: MutableList<FirVariable> = mutableListOf()
val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
override fun build(): FirScript {
@@ -54,6 +56,7 @@ class FirScriptBuilder : FirAnnotationContainerBuilder {
name,
statements,
symbol,
parameters,
contextReceivers.toMutableOrEmpty(),
)
}
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirScript
import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.symbols.impl.FirScriptSymbol
@@ -38,6 +39,7 @@ internal class FirScriptImpl(
override val name: Name,
override val statements: MutableList<FirStatement>,
override val symbol: FirScriptSymbol,
override val parameters: MutableList<FirVariable>,
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
) : FirScript() {
init {
@@ -47,12 +49,14 @@ internal class FirScriptImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) }
statements.forEach { it.accept(visitor, data) }
parameters.forEach { it.accept(visitor, data) }
contextReceivers.forEach { it.accept(visitor, data) }
}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirScriptImpl {
transformAnnotations(transformer, data)
transformStatements(transformer, data)
parameters.transformInplace(transformer, data)
contextReceivers.transformInplace(transformer, data)
return this
}