
commonMain.co.touchlab.skie.kir.element.KirSimpleFunction.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlin-plugin Show documentation
Show all versions of kotlin-plugin Show documentation
Kotlin compiler plugin that improves Swift interface of a Kotlin Multiplatform framework.
The newest version!
package co.touchlab.skie.kir.element
import co.touchlab.skie.kir.configuration.KirConfiguration
import co.touchlab.skie.kir.type.KirType
import co.touchlab.skie.oir.element.OirCallableDeclaration
import co.touchlab.skie.oir.element.OirFunction
import co.touchlab.skie.oir.element.OirSimpleFunction
import co.touchlab.skie.sir.element.SirSimpleFunction
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
class KirSimpleFunction(
override val baseDescriptor: FunctionDescriptor,
override val descriptor: FunctionDescriptor,
override val owner: KirClass,
override val origin: KirCallableDeclaration.Origin,
val isSuspend: Boolean,
var returnType: KirType,
val kind: Kind,
override val scope: KirScope,
override val errorHandlingStrategy: OirFunction.ErrorHandlingStrategy,
override val deprecationLevel: DeprecationLevel,
override val isRefinedInSwift: Boolean,
) : KirFunction(), KirOverridableDeclaration {
lateinit var oirSimpleFunction: OirSimpleFunction
override val oirCallableDeclaration: OirCallableDeclaration
get() = oirSimpleFunction
private val overridableDeclarationDelegate = KirOverridableDeclarationDelegate(this)
override val overriddenDeclarations: List by overridableDeclarationDelegate::overriddenDeclarations
override val overriddenBy: List by overridableDeclarationDelegate::overriddenBy
override val valueParameters: MutableList = mutableListOf()
override val configuration: KirConfiguration = KirConfiguration(owner.configuration)
override val defaultArgumentsOverloads: MutableList = mutableListOf()
override val originalSirDeclaration: SirSimpleFunction
get() = oirSimpleFunction.originalSirFunction
override val primarySirDeclaration: SirSimpleFunction
get() = oirSimpleFunction.primarySirFunction
override var bridgedSirDeclaration: SirSimpleFunction?
get() = oirSimpleFunction.bridgedSirFunction
set(value) {
oirSimpleFunction.bridgedSirFunction = value
}
val originalSirFunction: SirSimpleFunction
get() = oirSimpleFunction.originalSirFunction
val primarySirFunction: SirSimpleFunction
get() = oirSimpleFunction.primarySirFunction
var bridgedSirFunction: SirSimpleFunction?
get() = oirSimpleFunction.bridgedSirFunction
set(value) {
oirSimpleFunction.bridgedSirFunction = value
}
init {
owner.callableDeclarations.add(this)
}
override fun addOverride(declaration: KirSimpleFunction) {
overridableDeclarationDelegate.addOverride(declaration)
}
override fun removeOverride(declaration: KirSimpleFunction) {
overridableDeclarationDelegate.removeOverride(declaration)
}
override fun addOverriddenBy(declaration: KirSimpleFunction) {
overridableDeclarationDelegate.addOverriddenBy(declaration)
}
override fun removeOverriddenBy(declaration: KirSimpleFunction) {
overridableDeclarationDelegate.removeOverriddenBy(declaration)
}
override fun toString(): String = "${this::class.simpleName}: $descriptor"
sealed interface Kind {
object Function : Kind
data class PropertyGetter(val propertyDescriptor: PropertyDescriptor) : Kind
data class PropertySetter(val propertyDescriptor: PropertyDescriptor) : Kind
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy