
org.jetbrains.kotlin.ir.declarations.impl.IrScriptImpl.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrScriptSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.utils.SmartList
private val SCRIPT_ORIGIN = object : IrDeclarationOriginImpl("SCRIPT") {}
class IrScriptImpl(
override val symbol: IrScriptSymbol,
override val name: Name
) : IrScript() {
override val startOffset: Int get() = UNDEFINED_OFFSET
override val endOffset: Int get() = UNDEFINED_OFFSET
override var origin: IrDeclarationOrigin = SCRIPT_ORIGIN
private var _parent: IrDeclarationParent? = null
override var parent: IrDeclarationParent
get() = _parent
?: throw UninitializedPropertyAccessException("Parent not initialized: $this")
set(v) {
_parent = v
}
override var annotations: List = SmartList()
override val statements: MutableList = mutableListOf()
override lateinit var thisReceiver: IrValueParameter
override lateinit var baseClass: IrType
override lateinit var explicitCallParameters: List
override lateinit var implicitReceiversParameters: List
override lateinit var providedProperties: List>
override var resultProperty: IrPropertySymbol? = null
override var earlierScripts: List? = null
@ObsoleteDescriptorBasedAPI
override val descriptor: ScriptDescriptor
get() = symbol.descriptor
override val factory: IrFactory
get() = error("Create IrScriptImpl directly")
init {
symbol.bind(this)
}
override fun accept(visitor: IrElementVisitor, data: D): R {
return visitor.visitScript(this, data)
}
override fun acceptChildren(visitor: IrElementVisitor, 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 transformChildren(transformer: IrElementTransformer, 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 }
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy