Implement support for synthetic script params in IR:
implicit receivers and provided properties also support script imports
This commit is contained in:
@@ -24,9 +24,11 @@ abstract class IrScript :
|
||||
|
||||
abstract var explicitCallParameters: List<IrValueParameter>
|
||||
|
||||
abstract var implicitReceivers: List<IrValueParameter>
|
||||
abstract var implicitReceiversParameters: List<IrValueParameter>
|
||||
|
||||
abstract var providedProperties: List<IrPropertySymbol>
|
||||
abstract var providedProperties: List<Pair<IrValueParameter, IrPropertySymbol>>
|
||||
|
||||
abstract var resultProperty: IrPropertySymbol?
|
||||
|
||||
abstract var earlierScripts: List<IrScriptSymbol>?
|
||||
}
|
||||
|
||||
@@ -46,9 +46,10 @@ class IrScriptImpl(
|
||||
|
||||
override lateinit var baseClass: IrType
|
||||
override lateinit var explicitCallParameters: List<IrValueParameter>
|
||||
override lateinit var implicitReceivers: List<IrValueParameter>
|
||||
override lateinit var providedProperties: List<IrPropertySymbol>
|
||||
override lateinit var implicitReceiversParameters: List<IrValueParameter>
|
||||
override lateinit var providedProperties: List<Pair<IrValueParameter, IrPropertySymbol>>
|
||||
override var resultProperty: IrPropertySymbol? = null
|
||||
override var earlierScripts: List<IrScriptSymbol>? = null
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
override val descriptor: ScriptDescriptor
|
||||
@@ -68,10 +69,16 @@ class IrScriptImpl(
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
statements.forEach { it.accept(visitor, data) }
|
||||
thisReceiver.accept(visitor, data)
|
||||
explicitCallParameters.forEach { it.accept(visitor, data) }
|
||||
implicitReceiversParameters.forEach { it.accept(visitor, data) }
|
||||
providedProperties.forEach { it.first.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
statements.transformInPlace(transformer, data)
|
||||
thisReceiver = thisReceiver.transform(transformer, data)
|
||||
explicitCallParameters = explicitCallParameters.map { it.transform(transformer, data) }
|
||||
implicitReceiversParameters = implicitReceiversParameters.map { it.transform(transformer, data) }
|
||||
providedProperties = providedProperties.map { it.first.transform(transformer, data) to it.second }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,6 +119,9 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
).also { scriptCopy ->
|
||||
scriptCopy.thisReceiver = declaration.thisReceiver.transform()
|
||||
declaration.statements.mapTo(scriptCopy.statements) { it.transform() }
|
||||
scriptCopy.explicitCallParameters = declaration.explicitCallParameters.map { it.transform() }
|
||||
scriptCopy.implicitReceiversParameters = declaration.implicitReceiversParameters.map { it.transform() }
|
||||
scriptCopy.providedProperties = declaration.providedProperties.map { it.first.transform() to it.second }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user