[IR] simplify Carriers (remove type parameters)

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