[IR] simplify Carriers (remove type parameters)
This commit is contained in:
committed by
Anton Bannykh
parent
adf5ee394e
commit
916a5f367c
@@ -386,11 +386,9 @@ fun usefulDeclarations(roots: Iterable<IrDeclaration>, context: JsIrBackendConte
|
|||||||
) {
|
) {
|
||||||
declaration.enqueue(klass, "annotated by @JsName")
|
declaration.enqueue(klass, "annotated by @JsName")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// TODO is this needed?
|
// A hack to enforce property lowering.
|
||||||
for (declaration in ArrayList(klass.declarations)) {
|
// Until a getter is accessed it doesn't get moved to the declaration list.
|
||||||
// TODO this is a hack.
|
|
||||||
if (declaration is IrProperty) {
|
if (declaration is IrProperty) {
|
||||||
fun IrSimpleFunction.enqueue(description: String) {
|
fun IrSimpleFunction.enqueue(description: String) {
|
||||||
findOverriddenContagiousDeclaration()?.let { enqueue(it, description) }
|
findOverriddenContagiousDeclaration()?.let { enqueue(it, description) }
|
||||||
|
|||||||
+6
-12
@@ -24,13 +24,13 @@ import org.jetbrains.kotlin.ir.declarations.impl.carriers.DeclarationCarrier
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
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<T>>(
|
abstract class IrDeclarationBase<T : DeclarationCarrier>(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin
|
origin: IrDeclarationOrigin
|
||||||
) : IrPersistingElementBase<T>(startOffset, endOffset),
|
) : IrPersistingElementBase<T>(startOffset, endOffset),
|
||||||
IrDeclaration,
|
IrDeclaration,
|
||||||
DeclarationCarrier<T> {
|
DeclarationCarrier {
|
||||||
|
|
||||||
override var parentField: IrDeclarationParent? = null
|
override var parentField: IrDeclarationParent? = null
|
||||||
|
|
||||||
@@ -75,18 +75,18 @@ abstract class IrDeclarationBase<T : DeclarationCarrier<T>>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class IrPersistingElementBase<T : Carrier<T>>(
|
abstract class IrPersistingElementBase<T : Carrier>(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int
|
endOffset: Int
|
||||||
) : IrElementBase(startOffset, endOffset),
|
) : IrElementBase(startOffset, endOffset),
|
||||||
Carrier<T> {
|
Carrier {
|
||||||
|
|
||||||
override var lastModified: Int = stageController.currentStage
|
override var lastModified: Int = stageController.currentStage
|
||||||
|
|
||||||
var loweredUpTo = stageController.currentStage
|
var loweredUpTo = stageController.currentStage
|
||||||
|
|
||||||
// TODO Array<T>?
|
// TODO Array<T>?
|
||||||
private var values: Array<Any?>? = null
|
private var values: Array<Carrier>? = null
|
||||||
|
|
||||||
val createdOn: Int = stageController.currentStage
|
val createdOn: Int = stageController.currentStage
|
||||||
// get() = values?.let { (it[0] as T).lastModified } ?: lastModified
|
// get() = values?.let { (it[0] as T).lastModified } ?: lastModified
|
||||||
@@ -140,13 +140,7 @@ abstract class IrPersistingElementBase<T : Carrier<T>>(
|
|||||||
if (stage == lastModified) {
|
if (stage == lastModified) {
|
||||||
return this as T
|
return this as T
|
||||||
} else {
|
} else {
|
||||||
val newValues = values?.let { oldValues ->
|
values = (values ?: emptyArray()) + this.clone() as T
|
||||||
oldValues.copyOf(oldValues.size + 1)
|
|
||||||
} ?: arrayOfNulls<Any?>(1)
|
|
||||||
|
|
||||||
newValues[newValues.size - 1] = this.clone()
|
|
||||||
|
|
||||||
values = newValues
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.lastModified = stage
|
this.lastModified = stage
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
|||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
abstract class IrFunctionBase<T : FunctionBaseCarrier<T>>(
|
abstract class IrFunctionBase<T : FunctionBaseCarrier>(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
@@ -40,7 +40,7 @@ abstract class IrFunctionBase<T : FunctionBaseCarrier<T>>(
|
|||||||
) :
|
) :
|
||||||
IrDeclarationBase<T>(startOffset, endOffset, origin),
|
IrDeclarationBase<T>(startOffset, endOffset, origin),
|
||||||
IrFunction,
|
IrFunction,
|
||||||
FunctionBaseCarrier<T> {
|
FunctionBaseCarrier {
|
||||||
|
|
||||||
override var returnTypeFieldField: IrType = returnType
|
override var returnTypeFieldField: IrType = returnType
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
|
|
||||||
interface AnonymousInitializerCarrier : DeclarationCarrier<AnonymousInitializerCarrier> {
|
interface AnonymousInitializerCarrier : DeclarationCarrier {
|
||||||
var bodyField: IrBlockBody?
|
var bodyField: IrBlockBody?
|
||||||
|
|
||||||
override fun clone(): AnonymousInitializerCarrier {
|
override fun clone(): AnonymousInitializerCarrier {
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.ir.declarations.impl.carriers
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||||
|
|
||||||
interface BodyCarrier : Carrier<BodyCarrier> {
|
interface BodyCarrier : Carrier {
|
||||||
|
|
||||||
var containerField: IrDeclaration?
|
var containerField: IrDeclaration?
|
||||||
|
|
||||||
|
|||||||
+2
-4
@@ -5,10 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations.impl.carriers
|
package org.jetbrains.kotlin.ir.declarations.impl.carriers
|
||||||
|
|
||||||
// TODO degenerify
|
interface Carrier {
|
||||||
// TODO degenerify
|
|
||||||
interface Carrier<in T : Carrier<T>> {
|
|
||||||
val lastModified: Int
|
val lastModified: Int
|
||||||
|
|
||||||
fun clone(): Carrier<T>
|
fun clone(): Carrier
|
||||||
}
|
}
|
||||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
|
|
||||||
interface ClassCarrier : DeclarationCarrier<ClassCarrier> {
|
interface ClassCarrier : DeclarationCarrier {
|
||||||
var thisReceiverField: IrValueParameter?
|
var thisReceiverField: IrValueParameter?
|
||||||
var metadataField: MetadataSource?
|
var metadataField: MetadataSource?
|
||||||
var visibilityField: Visibility
|
var visibilityField: Visibility
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
|||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
|
|
||||||
|
|
||||||
interface ConstructorCarrier : FunctionBaseCarrier<ConstructorCarrier> {
|
interface ConstructorCarrier : FunctionBaseCarrier {
|
||||||
|
|
||||||
override fun clone(): ConstructorCarrier {
|
override fun clone(): ConstructorCarrier {
|
||||||
return ConstructorCarrierImpl(
|
return ConstructorCarrierImpl(
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
|
|
||||||
interface DeclarationCarrier<in T : DeclarationCarrier<T>>: Carrier<T> {
|
interface DeclarationCarrier: Carrier {
|
||||||
var parentField: IrDeclarationParent?
|
var parentField: IrDeclarationParent?
|
||||||
var originField: IrDeclarationOrigin
|
var originField: IrDeclarationOrigin
|
||||||
var annotationsField: List<IrConstructorCall>
|
var annotationsField: List<IrConstructorCall>
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
|
|
||||||
interface EnumEntryCarrier : DeclarationCarrier<EnumEntryCarrier> {
|
interface EnumEntryCarrier : DeclarationCarrier {
|
||||||
var correspondingClassField: IrClass?
|
var correspondingClassField: IrClass?
|
||||||
var initializerExpressionField: IrExpressionBody?
|
var initializerExpressionField: IrExpressionBody?
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
|
|
||||||
interface ErrorCarrier : DeclarationCarrier<ErrorCarrier> {
|
interface ErrorCarrier : DeclarationCarrier {
|
||||||
|
|
||||||
override fun clone(): ErrorCarrier {
|
override fun clone(): ErrorCarrier {
|
||||||
return ErrorCarrierImpl(lastModified, parentField, originField, annotationsField)
|
return ErrorCarrierImpl(lastModified, parentField, originField, annotationsField)
|
||||||
@@ -21,4 +21,4 @@ class ErrorCarrierImpl(
|
|||||||
override var parentField: IrDeclarationParent?,
|
override var parentField: IrDeclarationParent?,
|
||||||
override var originField: IrDeclarationOrigin,
|
override var originField: IrDeclarationOrigin,
|
||||||
override var annotationsField: List<IrConstructorCall>
|
override var annotationsField: List<IrConstructorCall>
|
||||||
) : ErrorCarrier
|
) : ErrorCarrier
|
||||||
+1
-1
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||||
|
|
||||||
interface FieldCarrier : DeclarationCarrier<FieldCarrier> {
|
interface FieldCarrier : DeclarationCarrier {
|
||||||
var initializerField: IrExpressionBody?
|
var initializerField: IrExpressionBody?
|
||||||
var correspondingPropertySymbolField: IrPropertySymbol?
|
var correspondingPropertySymbolField: IrPropertySymbol?
|
||||||
var metadataField: MetadataSource?
|
var metadataField: MetadataSource?
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
|||||||
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
|
||||||
|
|
||||||
interface FunctionBaseCarrier<T : FunctionBaseCarrier<T>> : DeclarationCarrier<T> {
|
interface FunctionBaseCarrier : DeclarationCarrier {
|
||||||
var returnTypeFieldField: IrType
|
var returnTypeFieldField: IrType
|
||||||
var dispatchReceiverParameterField: IrValueParameter?
|
var dispatchReceiverParameterField: IrValueParameter?
|
||||||
var extensionReceiverParameterField: IrValueParameter?
|
var extensionReceiverParameterField: IrValueParameter?
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
|
|
||||||
interface FunctionCarrier : FunctionBaseCarrier<FunctionCarrier> {
|
interface FunctionCarrier : FunctionBaseCarrier {
|
||||||
var correspondingPropertySymbolField: IrPropertySymbol?
|
var correspondingPropertySymbolField: IrPropertySymbol?
|
||||||
var overriddenSymbolsField: List<IrSimpleFunctionSymbol>
|
var overriddenSymbolsField: List<IrSimpleFunctionSymbol>
|
||||||
var attributeOwnerIdField: IrAttributeContainer
|
var attributeOwnerIdField: IrAttributeContainer
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.ir.declarations.impl.carriers
|
|||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
|
|
||||||
interface LocalDelegatedPropertyCarrier : DeclarationCarrier<LocalDelegatedPropertyCarrier> {
|
interface LocalDelegatedPropertyCarrier : DeclarationCarrier {
|
||||||
var delegateField: IrVariable?
|
var delegateField: IrVariable?
|
||||||
var getterField: IrFunction?
|
var getterField: IrFunction?
|
||||||
var setterField: IrFunction?
|
var setterField: IrFunction?
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.ir.declarations.impl.carriers
|
|||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
|
|
||||||
interface PropertyCarrier : DeclarationCarrier<PropertyCarrier> {
|
interface PropertyCarrier : DeclarationCarrier {
|
||||||
var backingFieldField: IrField?
|
var backingFieldField: IrField?
|
||||||
var getterField: IrSimpleFunction?
|
var getterField: IrSimpleFunction?
|
||||||
var setterField: IrSimpleFunction?
|
var setterField: IrSimpleFunction?
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
|
|
||||||
interface TypeAliasCarrier : DeclarationCarrier<TypeAliasCarrier> {
|
interface TypeAliasCarrier : DeclarationCarrier {
|
||||||
|
|
||||||
var typeParametersField: List<IrTypeParameter>
|
var typeParametersField: List<IrTypeParameter>
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
|
|
||||||
interface TypeParameterCarrier : DeclarationCarrier<TypeParameterCarrier> {
|
interface TypeParameterCarrier : DeclarationCarrier {
|
||||||
|
|
||||||
override fun clone(): TypeParameterCarrier {
|
override fun clone(): TypeParameterCarrier {
|
||||||
return TypeParameterCarrierImpl(lastModified, parentField, originField, annotationsField)
|
return TypeParameterCarrierImpl(lastModified, parentField, originField, annotationsField)
|
||||||
@@ -21,4 +21,4 @@ class TypeParameterCarrierImpl(
|
|||||||
override var parentField: IrDeclarationParent?,
|
override var parentField: IrDeclarationParent?,
|
||||||
override var originField: IrDeclarationOrigin,
|
override var originField: IrDeclarationOrigin,
|
||||||
override var annotationsField: List<IrConstructorCall>
|
override var annotationsField: List<IrConstructorCall>
|
||||||
) : TypeParameterCarrier
|
) : TypeParameterCarrier
|
||||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
|
|
||||||
interface ValueParameterCarrier : DeclarationCarrier<ValueParameterCarrier> {
|
interface ValueParameterCarrier : DeclarationCarrier {
|
||||||
var defaultValueField: IrExpressionBody?
|
var defaultValueField: IrExpressionBody?
|
||||||
|
|
||||||
override fun clone(): ValueParameterCarrier {
|
override fun clone(): ValueParameterCarrier {
|
||||||
|
|||||||
Reference in New Issue
Block a user