Partially revert "Persistent IR implementation"
This partially reverts commit f437da8ee5.
Changes related to carriers and others are still there. They will be
moved out to a separate module in a subsequent commit.
This commit is contained in:
+2
-17
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer
|
import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.AnonymousInitializerCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
|
||||||
|
|
||||||
@@ -30,10 +29,7 @@ class IrAnonymousInitializerImpl(
|
|||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrAnonymousInitializerSymbol,
|
override val symbol: IrAnonymousInitializerSymbol,
|
||||||
override val isStatic: Boolean = false
|
override val isStatic: Boolean = false
|
||||||
) : IrDeclarationBase<AnonymousInitializerCarrier>(startOffset, endOffset, origin),
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrAnonymousInitializer {
|
||||||
IrAnonymousInitializer,
|
|
||||||
AnonymousInitializerCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -42,16 +38,5 @@ class IrAnonymousInitializerImpl(
|
|||||||
override val descriptor: ClassDescriptor
|
override val descriptor: ClassDescriptor
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
|
|
||||||
override var bodyField: IrBlockBody? = null
|
override lateinit var body: IrBlockBody
|
||||||
|
|
||||||
override var body: IrBlockBody
|
|
||||||
get() = getCarrier().bodyField!!
|
|
||||||
set(v) {
|
|
||||||
if (getCarrier().bodyField !== v) {
|
|
||||||
if (v is IrBodyBase<*>) {
|
|
||||||
v.container = this
|
|
||||||
}
|
|
||||||
setCarrier().bodyField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,12 +19,9 @@ package org.jetbrains.kotlin.ir.declarations.impl
|
|||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.ClassCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import java.util.*
|
|
||||||
import kotlin.collections.ArrayList
|
|
||||||
|
|
||||||
class IrClassImpl(
|
class IrClassImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -33,8 +30,8 @@ class IrClassImpl(
|
|||||||
override val symbol: IrClassSymbol,
|
override val symbol: IrClassSymbol,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val kind: ClassKind,
|
override val kind: ClassKind,
|
||||||
visibility: Visibility,
|
override var visibility: Visibility,
|
||||||
modality: Modality,
|
override var modality: Modality,
|
||||||
override val isCompanion: Boolean = false,
|
override val isCompanion: Boolean = false,
|
||||||
override val isInner: Boolean = false,
|
override val isInner: Boolean = false,
|
||||||
override val isData: Boolean = false,
|
override val isData: Boolean = false,
|
||||||
@@ -43,11 +40,7 @@ class IrClassImpl(
|
|||||||
override val isExpect: Boolean = false,
|
override val isExpect: Boolean = false,
|
||||||
override val isFun: Boolean = false,
|
override val isFun: Boolean = false,
|
||||||
override val source: SourceElement = SourceElement.NO_SOURCE
|
override val source: SourceElement = SourceElement.NO_SOURCE
|
||||||
) :
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrClass {
|
||||||
IrDeclarationBase<ClassCarrier>(startOffset, endOffset, origin),
|
|
||||||
IrClass,
|
|
||||||
ClassCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -56,89 +49,15 @@ class IrClassImpl(
|
|||||||
override val descriptor: ClassDescriptor
|
override val descriptor: ClassDescriptor
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
|
|
||||||
override var visibilityField: Visibility = visibility
|
override var thisReceiver: IrValueParameter? = null
|
||||||
|
|
||||||
override var visibility: Visibility
|
|
||||||
get() = getCarrier().visibilityField
|
|
||||||
set(v) {
|
|
||||||
if (visibility !== v) {
|
|
||||||
setCarrier().visibilityField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var thisReceiverField: IrValueParameter? = null
|
|
||||||
|
|
||||||
override var thisReceiver: IrValueParameter?
|
|
||||||
get() = getCarrier().thisReceiverField
|
|
||||||
set(v) {
|
|
||||||
if (thisReceiver !== v) {
|
|
||||||
setCarrier().thisReceiverField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private var initialDeclarations: MutableList<IrDeclaration>? = null
|
|
||||||
|
|
||||||
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
||||||
get() {
|
|
||||||
if (createdOn < stageController.currentStage && initialDeclarations == null) {
|
|
||||||
initialDeclarations = Collections.unmodifiableList(ArrayList(field))
|
|
||||||
}
|
|
||||||
|
|
||||||
return if (stageController.canAccessDeclarationsOf(this)) {
|
override var typeParameters: List<IrTypeParameter> = emptyList()
|
||||||
ensureLowered()
|
|
||||||
field
|
|
||||||
} else {
|
|
||||||
initialDeclarations ?: field
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var typeParametersField: List<IrTypeParameter> = emptyList()
|
override var superTypes: List<IrType> = emptyList()
|
||||||
|
|
||||||
override var typeParameters: List<IrTypeParameter>
|
override var metadata: MetadataSource? = null
|
||||||
get() = getCarrier().typeParametersField
|
|
||||||
set(v) {
|
|
||||||
if (typeParameters !== v) {
|
|
||||||
setCarrier().typeParametersField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var superTypesField: List<IrType> = emptyList()
|
override var attributeOwnerId: IrAttributeContainer = this
|
||||||
|
|
||||||
override var superTypes: List<IrType>
|
|
||||||
get() = getCarrier().superTypesField
|
|
||||||
set(v) {
|
|
||||||
if (superTypes !== v) {
|
|
||||||
setCarrier().superTypesField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var metadataField: MetadataSource? = null
|
|
||||||
|
|
||||||
override var metadata: MetadataSource?
|
|
||||||
get() = getCarrier().metadataField
|
|
||||||
set(v) {
|
|
||||||
if (metadata !== v) {
|
|
||||||
setCarrier().metadataField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var modalityField: Modality = modality
|
|
||||||
|
|
||||||
override var modality: Modality
|
|
||||||
get() = getCarrier().modalityField
|
|
||||||
set(v) {
|
|
||||||
if (modality !== v) {
|
|
||||||
setCarrier().modalityField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var attributeOwnerIdField: IrAttributeContainer = this
|
|
||||||
|
|
||||||
override var attributeOwnerId: IrAttributeContainer
|
|
||||||
get() = getCarrier().attributeOwnerIdField
|
|
||||||
set(v) {
|
|
||||||
if (attributeOwnerId !== v) {
|
|
||||||
setCarrier().attributeOwnerIdField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-11
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
|||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.ConstructorCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -38,16 +37,7 @@ class IrConstructorImpl(
|
|||||||
isExternal: Boolean,
|
isExternal: Boolean,
|
||||||
override val isPrimary: Boolean,
|
override val isPrimary: Boolean,
|
||||||
isExpect: Boolean
|
isExpect: Boolean
|
||||||
) :
|
) : IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType), IrConstructor {
|
||||||
IrFunctionBase<ConstructorCarrier>(
|
|
||||||
startOffset, endOffset, origin, name,
|
|
||||||
visibility,
|
|
||||||
isInline, isExternal, isExpect,
|
|
||||||
returnType
|
|
||||||
),
|
|
||||||
IrConstructor,
|
|
||||||
ConstructorCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-155
@@ -17,170 +17,27 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.ir.IrElementBase
|
import org.jetbrains.kotlin.ir.IrElementBase
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.BodyCarrier
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.Carrier
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.DeclarationCarrier
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
|
|
||||||
abstract class IrDeclarationBase<T : DeclarationCarrier>(
|
abstract class IrDeclarationBase(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin
|
override var origin: IrDeclarationOrigin
|
||||||
) : IrPersistingElementBase<T>(startOffset, endOffset),
|
) : IrElementBase(startOffset, endOffset), IrDeclaration {
|
||||||
IrDeclaration,
|
|
||||||
DeclarationCarrier {
|
|
||||||
|
|
||||||
override val factory: IrFactory
|
override val factory: IrFactory
|
||||||
get() = IrFactoryImpl
|
get() = IrFactoryImpl
|
||||||
|
|
||||||
override var parentField: IrDeclarationParent? = null
|
private var _parent: IrDeclarationParent? = null
|
||||||
|
|
||||||
// TODO reduce boilerplate
|
|
||||||
override var parent: IrDeclarationParent
|
override var parent: IrDeclarationParent
|
||||||
get() = getCarrier().parentField ?: throw UninitializedPropertyAccessException("Parent not initialized: $this")
|
get() = _parent
|
||||||
set(p) {
|
?: throw UninitializedPropertyAccessException("Parent not initialized: $this")
|
||||||
if (getCarrier().parentField !== p) {
|
|
||||||
setCarrier().parentField = p
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var originField: IrDeclarationOrigin = origin
|
|
||||||
|
|
||||||
override var origin: IrDeclarationOrigin
|
|
||||||
get() = getCarrier().originField
|
|
||||||
set(p) {
|
|
||||||
if (getCarrier().originField !== p) {
|
|
||||||
setCarrier().originField = p
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var removedOn: Int = Int.MAX_VALUE
|
|
||||||
|
|
||||||
override var annotationsField: List<IrConstructorCall> = emptyList()
|
|
||||||
|
|
||||||
override var annotations: List<IrConstructorCall>
|
|
||||||
get() = getCarrier().annotationsField
|
|
||||||
set(v) {
|
set(v) {
|
||||||
if (getCarrier().annotationsField !== v) {
|
_parent = v
|
||||||
setCarrier().annotationsField = v
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun ensureLowered() {
|
override var annotations: List<IrConstructorCall> = emptyList()
|
||||||
if (stageController.currentStage > loweredUpTo) {
|
|
||||||
stageController.lazyLower(this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class IrPersistingElementBase<T : Carrier>(
|
|
||||||
startOffset: Int,
|
|
||||||
endOffset: Int
|
|
||||||
) : IrElementBase(startOffset, endOffset),
|
|
||||||
Carrier {
|
|
||||||
|
|
||||||
override var lastModified: Int = stageController.currentStage
|
|
||||||
|
|
||||||
var loweredUpTo = stageController.currentStage
|
|
||||||
|
|
||||||
// TODO Array<T>?
|
|
||||||
private var values: Array<Carrier>? = null
|
|
||||||
|
|
||||||
val createdOn: Int = stageController.currentStage
|
|
||||||
// get() = values?.let { (it[0] as T).lastModified } ?: lastModified
|
|
||||||
|
|
||||||
abstract fun ensureLowered()
|
|
||||||
|
|
||||||
protected fun getCarrier(): T {
|
|
||||||
stageController.currentStage.let { stage ->
|
|
||||||
ensureLowered()
|
|
||||||
|
|
||||||
if (stage >= lastModified) return this as T
|
|
||||||
|
|
||||||
if (stage < createdOn) error("Access before creation")
|
|
||||||
|
|
||||||
val v = values
|
|
||||||
?: error("How come?")
|
|
||||||
|
|
||||||
var l = -1
|
|
||||||
var r = v.size
|
|
||||||
while (r - l > 1) {
|
|
||||||
val m = (l + r) / 2
|
|
||||||
if ((v[m] as T).lastModified <= stage) {
|
|
||||||
l = m
|
|
||||||
} else {
|
|
||||||
r = m
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (l < 0) {
|
|
||||||
error("access before creation")
|
|
||||||
}
|
|
||||||
|
|
||||||
return v[l] as T
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO naming? e.g. `mutableCarrier`
|
|
||||||
protected fun setCarrier(): T {
|
|
||||||
val stage = stageController.currentStage
|
|
||||||
|
|
||||||
ensureLowered()
|
|
||||||
|
|
||||||
if (!stageController.canModify(this)) {
|
|
||||||
error("Cannot modify this element!")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (loweredUpTo > stage) {
|
|
||||||
error("retrospective modification")
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO move up? i.e. fast path
|
|
||||||
if (stage == lastModified) {
|
|
||||||
return this as T
|
|
||||||
} else {
|
|
||||||
values = (values ?: emptyArray()) + this.clone() as T
|
|
||||||
}
|
|
||||||
|
|
||||||
this.lastModified = stage
|
|
||||||
|
|
||||||
return this as T
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class IrBodyBase<B : IrBodyBase<B>>(
|
|
||||||
startOffset: Int,
|
|
||||||
endOffset: Int,
|
|
||||||
private var initializer: (B.() -> Unit)?
|
|
||||||
) : IrPersistingElementBase<BodyCarrier>(startOffset, endOffset), IrBody, BodyCarrier {
|
|
||||||
override var containerField: IrDeclaration? = null
|
|
||||||
|
|
||||||
var container: IrDeclaration
|
|
||||||
get() = getCarrier().containerField!!
|
|
||||||
set(p) {
|
|
||||||
if (getCarrier().containerField !== p) {
|
|
||||||
setCarrier().containerField = p
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected fun <T> checkEnabled(fn: () -> T): T {
|
|
||||||
if (!stageController.bodiesEnabled) error("Bodies disabled!")
|
|
||||||
ensureLowered()
|
|
||||||
return fn()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun ensureLowered() {
|
|
||||||
initializer?.let { initFn ->
|
|
||||||
initializer = null
|
|
||||||
stageController.withStage(createdOn) {
|
|
||||||
stageController.bodyLowering {
|
|
||||||
initFn.invoke(this as B)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (loweredUpTo + 1 < stageController.currentStage) {
|
|
||||||
stageController.lazyLower(this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+3
-27
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
|
import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.EnumEntryCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -32,10 +31,7 @@ class IrEnumEntryImpl(
|
|||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrEnumEntrySymbol,
|
override val symbol: IrEnumEntrySymbol,
|
||||||
override val name: Name
|
override val name: Name
|
||||||
) : IrDeclarationBase<EnumEntryCarrier>(startOffset, endOffset, origin),
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrEnumEntry {
|
||||||
IrEnumEntry,
|
|
||||||
EnumEntryCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -44,26 +40,6 @@ class IrEnumEntryImpl(
|
|||||||
override val descriptor: ClassDescriptor
|
override val descriptor: ClassDescriptor
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
|
|
||||||
override var correspondingClassField: IrClass? = null
|
override var correspondingClass: IrClass? = null
|
||||||
|
override var initializerExpression: IrExpressionBody? = null
|
||||||
override var correspondingClass: IrClass?
|
|
||||||
get() = getCarrier().correspondingClassField
|
|
||||||
set(v) {
|
|
||||||
if (correspondingClass !== v) {
|
|
||||||
setCarrier().correspondingClassField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var initializerExpressionField: IrExpressionBody? = null
|
|
||||||
|
|
||||||
override var initializerExpression: IrExpressionBody?
|
|
||||||
get() = getCarrier().initializerExpressionField
|
|
||||||
set(v) {
|
|
||||||
if (initializerExpression !== v) {
|
|
||||||
if (v is IrBodyBase<*>) {
|
|
||||||
v.container = this
|
|
||||||
}
|
|
||||||
setCarrier().initializerExpressionField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -20,11 +20,10 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration
|
import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.ErrorCarrier
|
|
||||||
|
|
||||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||||
class IrErrorDeclarationImpl(
|
class IrErrorDeclarationImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
override val descriptor: DeclarationDescriptor
|
override val descriptor: DeclarationDescriptor
|
||||||
) : IrDeclarationBase<ErrorCarrier>(startOffset, endOffset, IrDeclarationOrigin.DEFINED), IrErrorDeclaration, ErrorCarrier
|
) : IrDeclarationBase(startOffset, endOffset, IrDeclarationOrigin.DEFINED), IrErrorDeclaration
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ object IrFactoryImpl : IrFactory {
|
|||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
): IrBlockBody =
|
): IrBlockBody =
|
||||||
IrBlockBodyImpl(startOffset, endOffset, null)
|
IrBlockBodyImpl(startOffset, endOffset)
|
||||||
|
|
||||||
override fun createBlockBody(
|
override fun createBlockBody(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrField
|
import org.jetbrains.kotlin.ir.declarations.IrField
|
||||||
import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.FieldCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||||
@@ -39,11 +38,8 @@ class IrFieldImpl(
|
|||||||
override var visibility: Visibility,
|
override var visibility: Visibility,
|
||||||
override val isFinal: Boolean,
|
override val isFinal: Boolean,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean,
|
||||||
override val isStatic: Boolean
|
override val isStatic: Boolean,
|
||||||
) : IrDeclarationBase<FieldCarrier>(startOffset, endOffset, origin),
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrField {
|
||||||
IrField,
|
|
||||||
FieldCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -52,36 +48,9 @@ class IrFieldImpl(
|
|||||||
override val descriptor: PropertyDescriptor
|
override val descriptor: PropertyDescriptor
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
|
|
||||||
override var initializerField: IrExpressionBody? = null
|
override var initializer: IrExpressionBody? = null
|
||||||
|
|
||||||
override var initializer: IrExpressionBody?
|
override var correspondingPropertySymbol: IrPropertySymbol? = null
|
||||||
get() = getCarrier().initializerField
|
|
||||||
set(v) {
|
|
||||||
if (initializer !== v) {
|
|
||||||
if (v is IrBodyBase<*>) {
|
|
||||||
v.container = this
|
|
||||||
}
|
|
||||||
setCarrier().initializerField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var correspondingPropertySymbolField: IrPropertySymbol? = null
|
override var metadata: MetadataSource? = null
|
||||||
|
|
||||||
override var correspondingPropertySymbol: IrPropertySymbol?
|
|
||||||
get() = getCarrier().correspondingPropertySymbolField
|
|
||||||
set(v) {
|
|
||||||
if (correspondingPropertySymbol !== v) {
|
|
||||||
setCarrier().correspondingPropertySymbolField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var metadataField: MetadataSource? = null
|
|
||||||
|
|
||||||
override var metadata: MetadataSource?
|
|
||||||
get() = getCarrier().metadataField
|
|
||||||
set(v) {
|
|
||||||
if (metadata !== v) {
|
|
||||||
setCarrier().metadataField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class IrFileImpl(
|
|||||||
|
|
||||||
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
||||||
|
|
||||||
override var annotations: List<IrConstructorCall> = ArrayList()
|
override var annotations: List<IrConstructorCall> = emptyList()
|
||||||
|
|
||||||
override var metadata: MetadataSource? = null
|
override var metadata: MetadataSource? = null
|
||||||
|
|
||||||
|
|||||||
+14
-94
@@ -18,116 +18,36 @@ package org.jetbrains.kotlin.ir.declarations.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.FunctionBaseCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
abstract class IrFunctionBase<T : FunctionBaseCarrier>(
|
abstract class IrFunctionBase(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
visibility: Visibility,
|
override var visibility: Visibility,
|
||||||
override val isInline: Boolean,
|
override val isInline: Boolean,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean,
|
||||||
override val isExpect: Boolean,
|
override val isExpect: Boolean,
|
||||||
returnType: IrType
|
returnType: IrType
|
||||||
) :
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrFunction {
|
||||||
IrDeclarationBase<T>(startOffset, endOffset, origin),
|
|
||||||
IrFunction,
|
|
||||||
FunctionBaseCarrier {
|
|
||||||
|
|
||||||
override var returnTypeFieldField: IrType = returnType
|
|
||||||
|
|
||||||
private var returnTypeField: IrType
|
|
||||||
get() = getCarrier().returnTypeFieldField
|
|
||||||
set(v) {
|
|
||||||
if (returnTypeField !== v) {
|
|
||||||
setCarrier().returnTypeFieldField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
final override var returnType: IrType
|
final override var returnType: IrType = returnType
|
||||||
get() = returnTypeField.let {
|
get() = if (field === org.jetbrains.kotlin.ir.types.impl.IrUninitializedType) {
|
||||||
if (it !== IrUninitializedType) it else error("Return type is not initialized")
|
error("Return type is not initialized")
|
||||||
}
|
} else {
|
||||||
set(c) {
|
field
|
||||||
returnTypeField = c
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override var typeParametersField: List<IrTypeParameter> = emptyList()
|
override var typeParameters: List<IrTypeParameter> = emptyList()
|
||||||
|
|
||||||
override var typeParameters: List<IrTypeParameter>
|
override var dispatchReceiverParameter: IrValueParameter? = null
|
||||||
get() = getCarrier().typeParametersField
|
override var extensionReceiverParameter: IrValueParameter? = null
|
||||||
set(v) {
|
override var valueParameters: List<IrValueParameter> = emptyList()
|
||||||
if (typeParameters !== v) {
|
|
||||||
setCarrier().typeParametersField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var dispatchReceiverParameterField: IrValueParameter? = null
|
final override var body: IrBody? = null
|
||||||
|
|
||||||
override var dispatchReceiverParameter: IrValueParameter?
|
override var metadata: MetadataSource? = null
|
||||||
get() = getCarrier().dispatchReceiverParameterField
|
|
||||||
set(v) {
|
|
||||||
if (dispatchReceiverParameter !== v) {
|
|
||||||
setCarrier().dispatchReceiverParameterField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var extensionReceiverParameterField: IrValueParameter? = null
|
|
||||||
|
|
||||||
override var extensionReceiverParameter: IrValueParameter?
|
|
||||||
get() = getCarrier().extensionReceiverParameterField
|
|
||||||
set(v) {
|
|
||||||
if (extensionReceiverParameter !== v) {
|
|
||||||
setCarrier().extensionReceiverParameterField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var valueParametersField: List<IrValueParameter> = emptyList()
|
|
||||||
|
|
||||||
override var valueParameters: List<IrValueParameter>
|
|
||||||
get() = getCarrier().valueParametersField
|
|
||||||
set(v) {
|
|
||||||
if (valueParameters !== v) {
|
|
||||||
setCarrier().valueParametersField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var bodyField: IrBody? = null
|
|
||||||
|
|
||||||
final override var body: IrBody?
|
|
||||||
get() = getCarrier().bodyField
|
|
||||||
set(v) {
|
|
||||||
if (body !== v) {
|
|
||||||
if (v is IrBodyBase<*>) {
|
|
||||||
v.container = this
|
|
||||||
}
|
|
||||||
setCarrier().bodyField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var metadataField: MetadataSource? = null
|
|
||||||
|
|
||||||
override var metadata: MetadataSource?
|
|
||||||
get() = getCarrier().metadataField
|
|
||||||
set(v) {
|
|
||||||
if (metadata !== v) {
|
|
||||||
setCarrier().metadataField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var visibilityField: Visibility = visibility
|
|
||||||
|
|
||||||
override var visibility: Visibility
|
|
||||||
get() = getCarrier().visibilityField
|
|
||||||
set(v) {
|
|
||||||
if (visibility !== v) {
|
|
||||||
setCarrier().visibilityField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-36
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFakeOverrideFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFakeOverrideFunction
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.FunctionCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor
|
import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
@@ -34,44 +33,13 @@ abstract class IrFunctionCommonImpl(
|
|||||||
override val isOperator: Boolean,
|
override val isOperator: Boolean,
|
||||||
override val isInfix: Boolean,
|
override val isInfix: Boolean,
|
||||||
isExpect: Boolean,
|
isExpect: Boolean,
|
||||||
) :
|
) : IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType), IrSimpleFunction {
|
||||||
IrFunctionBase<FunctionCarrier>(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType),
|
override var overriddenSymbols: List<IrSimpleFunctionSymbol> = emptyList()
|
||||||
IrSimpleFunction,
|
|
||||||
FunctionCarrier {
|
|
||||||
|
|
||||||
@ObsoleteDescriptorBasedAPI
|
|
||||||
abstract override val descriptor: FunctionDescriptor
|
|
||||||
|
|
||||||
override var overriddenSymbolsField: List<IrSimpleFunctionSymbol> = emptyList()
|
|
||||||
|
|
||||||
override var overriddenSymbols: List<IrSimpleFunctionSymbol>
|
|
||||||
get() = getCarrier().overriddenSymbolsField
|
|
||||||
set(v) {
|
|
||||||
if (overriddenSymbols !== v) {
|
|
||||||
setCarrier().overriddenSymbolsField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("LeakingThis")
|
@Suppress("LeakingThis")
|
||||||
override var attributeOwnerIdField: IrAttributeContainer = this
|
override var attributeOwnerId: IrAttributeContainer = this
|
||||||
|
|
||||||
override var attributeOwnerId: IrAttributeContainer
|
override var correspondingPropertySymbol: IrPropertySymbol? = null
|
||||||
get() = getCarrier().attributeOwnerIdField
|
|
||||||
set(v) {
|
|
||||||
if (attributeOwnerId !== v) {
|
|
||||||
setCarrier().attributeOwnerIdField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var correspondingPropertySymbolField: IrPropertySymbol? = null
|
|
||||||
|
|
||||||
override var correspondingPropertySymbol: IrPropertySymbol?
|
|
||||||
get() = getCarrier().correspondingPropertySymbolField
|
|
||||||
set(v) {
|
|
||||||
if (correspondingPropertySymbol !== v) {
|
|
||||||
setCarrier().correspondingPropertySymbolField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class IrFunctionImpl(
|
class IrFunctionImpl(
|
||||||
|
|||||||
+5
-43
@@ -19,12 +19,10 @@ package org.jetbrains.kotlin.ir.declarations.impl
|
|||||||
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.LocalDelegatedPropertyCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
// TODO make not persistent
|
|
||||||
class IrLocalDelegatedPropertyImpl(
|
class IrLocalDelegatedPropertyImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
@@ -33,11 +31,7 @@ class IrLocalDelegatedPropertyImpl(
|
|||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val type: IrType,
|
override val type: IrType,
|
||||||
override val isVar: Boolean
|
override val isVar: Boolean
|
||||||
) :
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrLocalDelegatedProperty {
|
||||||
IrDeclarationBase<LocalDelegatedPropertyCarrier>(startOffset, endOffset, origin),
|
|
||||||
IrLocalDelegatedProperty,
|
|
||||||
LocalDelegatedPropertyCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -46,43 +40,11 @@ class IrLocalDelegatedPropertyImpl(
|
|||||||
override val descriptor: VariableDescriptorWithAccessors
|
override val descriptor: VariableDescriptorWithAccessors
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
|
|
||||||
override var delegateField: IrVariable? = null
|
override lateinit var delegate: IrVariable
|
||||||
|
|
||||||
override var delegate: IrVariable
|
override lateinit var getter: IrFunction
|
||||||
get() = getCarrier().delegateField!!
|
|
||||||
set(v) {
|
|
||||||
if (getCarrier().delegateField !== v) {
|
|
||||||
setCarrier().delegateField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var getterField: IrFunction? = null
|
override var setter: IrFunction? = null
|
||||||
|
|
||||||
override var getter: IrFunction
|
override var metadata: MetadataSource? = null
|
||||||
get() = getCarrier().getterField!!
|
|
||||||
set(v) {
|
|
||||||
if (getCarrier().getterField !== v) {
|
|
||||||
setCarrier().getterField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var setterField: IrFunction? = null
|
|
||||||
|
|
||||||
override var setter: IrFunction?
|
|
||||||
get() = getCarrier().setterField
|
|
||||||
set(v) {
|
|
||||||
if (setter !== v) {
|
|
||||||
setCarrier().setterField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var metadataField: MetadataSource? = null
|
|
||||||
|
|
||||||
override var metadata: MetadataSource?
|
|
||||||
get() = getCarrier().metadataField
|
|
||||||
set(v) {
|
|
||||||
if (metadata !== v) {
|
|
||||||
setCarrier().metadataField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-44
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.PropertyCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedPropertyDescriptor
|
import org.jetbrains.kotlin.ir.descriptors.WrappedPropertyDescriptor
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -38,52 +37,14 @@ abstract class IrPropertyCommonImpl(
|
|||||||
override val isDelegated: Boolean,
|
override val isDelegated: Boolean,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean,
|
||||||
override val isExpect: Boolean,
|
override val isExpect: Boolean,
|
||||||
) : IrDeclarationBase<PropertyCarrier>(startOffset, endOffset, origin),
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrProperty {
|
||||||
IrProperty,
|
override var backingField: IrField? = null
|
||||||
PropertyCarrier {
|
|
||||||
|
|
||||||
@ObsoleteDescriptorBasedAPI
|
override var getter: IrSimpleFunction? = null
|
||||||
abstract override val descriptor: PropertyDescriptor
|
|
||||||
|
|
||||||
override var backingFieldField: IrField? = null
|
override var setter: IrSimpleFunction? = null
|
||||||
|
|
||||||
override var backingField: IrField?
|
override var metadata: MetadataSource? = null
|
||||||
get() = getCarrier().backingFieldField
|
|
||||||
set(v) {
|
|
||||||
if (backingField !== v) {
|
|
||||||
setCarrier().backingFieldField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var getterField: IrSimpleFunction? = null
|
|
||||||
|
|
||||||
override var getter: IrSimpleFunction?
|
|
||||||
get() = getCarrier().getterField
|
|
||||||
set(v) {
|
|
||||||
if (getter !== v) {
|
|
||||||
setCarrier().getterField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var setterField: IrSimpleFunction? = null
|
|
||||||
|
|
||||||
override var setter: IrSimpleFunction?
|
|
||||||
get() = getCarrier().setterField
|
|
||||||
set(v) {
|
|
||||||
if (setter !== v) {
|
|
||||||
setCarrier().setterField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override var metadataField: MetadataSource? = null
|
|
||||||
|
|
||||||
override var metadata: MetadataSource?
|
|
||||||
get() = getCarrier().metadataField
|
|
||||||
set(v) {
|
|
||||||
if (metadata !== v) {
|
|
||||||
setCarrier().metadataField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class IrPropertyImpl(
|
class IrPropertyImpl(
|
||||||
|
|||||||
+2
-15
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrTypeAlias
|
import org.jetbrains.kotlin.ir.declarations.IrTypeAlias
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.TypeAliasCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -25,11 +24,7 @@ class IrTypeAliasImpl(
|
|||||||
override val expandedType: IrType,
|
override val expandedType: IrType,
|
||||||
override val isActual: Boolean,
|
override val isActual: Boolean,
|
||||||
origin: IrDeclarationOrigin
|
origin: IrDeclarationOrigin
|
||||||
) :
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeAlias {
|
||||||
IrDeclarationBase<TypeAliasCarrier>(startOffset, endOffset, origin),
|
|
||||||
IrTypeAlias,
|
|
||||||
TypeAliasCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -38,13 +33,5 @@ class IrTypeAliasImpl(
|
|||||||
override val descriptor: TypeAliasDescriptor
|
override val descriptor: TypeAliasDescriptor
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
|
|
||||||
override var typeParametersField: List<IrTypeParameter> = emptyList()
|
override var typeParameters: List<IrTypeParameter> = emptyList()
|
||||||
|
|
||||||
override var typeParameters: List<IrTypeParameter>
|
|
||||||
get() = getCarrier().typeParametersField
|
|
||||||
set(v) {
|
|
||||||
if (typeParameters !== v) {
|
|
||||||
setCarrier().typeParametersField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-6
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
|||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.TypeParameterCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -36,11 +35,7 @@ class IrTypeParameterImpl(
|
|||||||
override val index: Int,
|
override val index: Int,
|
||||||
override val isReified: Boolean,
|
override val isReified: Boolean,
|
||||||
override val variance: Variance
|
override val variance: Variance
|
||||||
) :
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeParameter {
|
||||||
IrDeclarationBase<TypeParameterCarrier>(startOffset, endOffset, origin),
|
|
||||||
IrTypeParameter,
|
|
||||||
TypeParameterCarrier {
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-18
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
|||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.ValueParameterCarrier
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
@@ -37,11 +36,7 @@ class IrValueParameterImpl(
|
|||||||
override val varargElementType: IrType?,
|
override val varargElementType: IrType?,
|
||||||
override val isCrossinline: Boolean,
|
override val isCrossinline: Boolean,
|
||||||
override val isNoinline: Boolean
|
override val isNoinline: Boolean
|
||||||
) :
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrValueParameter {
|
||||||
IrDeclarationBase<ValueParameterCarrier>(startOffset, endOffset, origin),
|
|
||||||
IrValueParameter,
|
|
||||||
ValueParameterCarrier {
|
|
||||||
|
|
||||||
@ObsoleteDescriptorBasedAPI
|
@ObsoleteDescriptorBasedAPI
|
||||||
override val descriptor: ParameterDescriptor
|
override val descriptor: ParameterDescriptor
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
@@ -50,16 +45,5 @@ class IrValueParameterImpl(
|
|||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override var defaultValueField: IrExpressionBody? = null
|
override var defaultValue: IrExpressionBody? = null
|
||||||
|
|
||||||
override var defaultValue: IrExpressionBody?
|
|
||||||
get() = getCarrier().defaultValueField
|
|
||||||
set(v) {
|
|
||||||
if (defaultValue !== v) {
|
|
||||||
if (v is IrBodyBase<*>) {
|
|
||||||
v.container = this
|
|
||||||
}
|
|
||||||
setCarrier().defaultValueField = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-13
@@ -16,28 +16,22 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.expressions.impl
|
package org.jetbrains.kotlin.ir.expressions.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.ir.IrElementBase
|
||||||
import org.jetbrains.kotlin.ir.IrStatement
|
import org.jetbrains.kotlin.ir.IrStatement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrBodyBase
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||||
|
|
||||||
class IrBlockBodyImpl(
|
class IrBlockBodyImpl(startOffset: Int, endOffset: Int) : IrElementBase(startOffset, endOffset), IrBlockBody {
|
||||||
startOffset: Int,
|
|
||||||
endOffset: Int,
|
|
||||||
initializer: (IrBlockBody.() -> Unit)? = null
|
|
||||||
) :
|
|
||||||
IrBodyBase<IrBlockBodyImpl>(startOffset, endOffset, initializer),
|
|
||||||
IrBlockBody {
|
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, statements: List<IrStatement>) : this(startOffset, endOffset) {
|
constructor(startOffset: Int, endOffset: Int, statements: List<IrStatement>) : this(startOffset, endOffset) {
|
||||||
statementsField.addAll(statements)
|
this.statements.addAll(statements)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var statementsField: MutableList<IrStatement> = ArrayList()
|
constructor(startOffset: Int, endOffset: Int, initializer: IrBlockBody.() -> Unit) : this(startOffset, endOffset) {
|
||||||
|
this.initializer()
|
||||||
|
}
|
||||||
|
|
||||||
override val statements: MutableList<IrStatement>
|
override val statements: MutableList<IrStatement> = ArrayList()
|
||||||
get() = checkEnabled { statementsField }
|
|
||||||
|
|
||||||
override val factory: IrFactory
|
override val factory: IrFactory
|
||||||
get() = IrFactoryImpl
|
get() = IrFactoryImpl
|
||||||
|
|||||||
+11
-16
@@ -16,33 +16,28 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.expressions.impl
|
package org.jetbrains.kotlin.ir.expressions.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.ir.IrElementBase
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrBodyBase
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
|
|
||||||
class IrExpressionBodyImpl private constructor(
|
class IrExpressionBodyImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
private var expressionField: IrExpression? = null,
|
|
||||||
initializer: (IrExpressionBody.() -> Unit)? = null
|
initializer: (IrExpressionBody.() -> Unit)? = null
|
||||||
) :
|
) : IrElementBase(startOffset, endOffset), IrExpressionBody {
|
||||||
IrBodyBase<IrExpressionBodyImpl>(startOffset, endOffset, initializer),
|
init {
|
||||||
IrExpressionBody {
|
initializer?.invoke(this)
|
||||||
|
}
|
||||||
|
|
||||||
constructor(expression: IrExpression) : this(expression.startOffset, expression.endOffset, expression, null)
|
constructor(startOffset: Int, endOffset: Int, expression: IrExpression) : this(startOffset, endOffset) {
|
||||||
|
this.expression = expression
|
||||||
|
}
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, expression: IrExpression) : this(startOffset, endOffset, expression, null)
|
constructor(expression: IrExpression) : this(expression.startOffset, expression.endOffset, expression)
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, initializer: IrExpressionBody.() -> Unit) :
|
override lateinit var expression: IrExpression
|
||||||
this(startOffset, endOffset, null, initializer)
|
|
||||||
|
|
||||||
override var expression: IrExpression
|
|
||||||
get() = checkEnabled { expressionField!! }
|
|
||||||
set(e) {
|
|
||||||
checkEnabled { expressionField = e }
|
|
||||||
}
|
|
||||||
|
|
||||||
override val factory: IrFactory
|
override val factory: IrFactory
|
||||||
get() = IrFactoryImpl
|
get() = IrFactoryImpl
|
||||||
|
|||||||
Reference in New Issue
Block a user