JS PIR: store signatures for lowered declarations inside PIR declarations

This commit is contained in:
Anton Bannykh
2021-06-24 14:35:11 +03:00
committed by Anton Bannykh
parent e0bdabcf61
commit bd4e7ffef8
17 changed files with 55 additions and 0 deletions
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.declarations.persistent.carriers.Carrier
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
import org.jetbrains.kotlin.ir.util.IdSignature
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -33,6 +34,8 @@ internal class PersistentIrAnonymousInitializer(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -60,6 +61,8 @@ internal class PersistentIrClass(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
import org.jetbrains.kotlin.ir.types.impl.ReturnTypeIsNotInitializedException
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
@@ -51,6 +52,8 @@ internal class PersistentIrConstructor(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -36,6 +37,8 @@ internal class PersistentIrEnumEntry(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.persistent.carriers.Carrier
import org.jetbrains.kotlin.ir.declarations.persistent.carriers.ErrorDeclarationCarrier
import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.util.IdSignature
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -29,6 +30,8 @@ internal class PersistentIrErrorDeclaration(
override val descriptor: DeclarationDescriptor
get() = _descriptor ?: this.toIrBasedDescriptor()
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -43,6 +44,8 @@ internal class PersistentIrField(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
import org.jetbrains.kotlin.ir.types.impl.ReturnTypeIsNotInitializedException
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
@@ -49,6 +50,8 @@ internal abstract class PersistentIrFunctionCommon(
PersistentIrDeclarationBase<FunctionCarrier>,
FunctionCarrier {
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -41,6 +42,8 @@ internal class PersistentIrLocalDelegatedProperty(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
@@ -42,6 +43,8 @@ internal abstract class PersistentIrPropertyCommon(
PersistentIrDeclarationBase<PropertyCarrier>,
PropertyCarrier {
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -40,6 +41,8 @@ internal class PersistentIrTypeAlias(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.declarations.persistent.carriers.TypeParameterCar
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.types.Variance
@@ -38,6 +39,8 @@ internal class PersistentIrTypeParameter(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
@@ -46,6 +47,8 @@ internal class PersistentIrValueParameter(
symbol.bind(this)
}
override var signature: IdSignature? = factory.currentSignature(this)
override var lastModified: Int = factory.stageController.currentStage
override var loweredUpTo: Int = factory.stageController.currentStage
override var values: Array<Carrier>? = null
@@ -24,6 +24,8 @@ internal fun PersistentIrGenerator.generateErrorDeclaration() {
+" get() = _descriptor ?: this." + import("toIrBasedDescriptor", "org.jetbrains.kotlin.ir.descriptors") + "()"
),
id,
signature,
id,
lastModified,
loweredUpTo,
values,
@@ -97,6 +97,8 @@ internal object PersistentIrGenerator {
val IrValueParameterSymbol = irSymbol("IrValueParameterSymbol")
val IrTypeParameterSymbol = irSymbol("IrTypeParameterSymbol")
val IdSignature = import("IdSignature", "org.jetbrains.kotlin.ir.util")
// Constructor parameters
val startOffset = +"override val startOffset: Int"
@@ -196,6 +198,8 @@ internal object PersistentIrGenerator {
)
// Fields
val signature = +"override var signature: " + IdSignature + "? = factory.currentSignature(this)"
val lastModified = +"override var lastModified: Int = factory.stageController.currentStage"
val loweredUpTo = +"override var loweredUpTo: Int = factory.stageController.currentStage"
val values = +"override var values: Array<" + Carrier + ">? = null"
@@ -207,6 +211,8 @@ internal object PersistentIrGenerator {
val annotationsField = +"override var annotationsField: List<" + IrConstructorCall + "> = emptyList()"
val commonFields = lines(
signature,
id,
lastModified,
loweredUpTo,
values,
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.persistent.carriers.DeclarationCarri
import org.jetbrains.kotlin.ir.expressions.IrBody
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.utils.addToStdlib.cast
interface PersistentIrDeclarationBase<T : DeclarationCarrier> : PersistentIrElementBase<T>, IrDeclaration, DeclarationCarrier {
@@ -32,6 +33,8 @@ interface PersistentIrDeclarationBase<T : DeclarationCarrier> : PersistentIrElem
override var annotationsField: List<IrConstructorCall>
var signature: IdSignature?
// TODO reduce boilerplate
override var parent: IrDeclarationParent
get() = getCarrier().parentField ?: throw UninitializedPropertyAccessException("Parent not initialized: $this")
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.expressions.persistent.PersistentIrBlockBody
import org.jetbrains.kotlin.ir.expressions.persistent.PersistentIrExpressionBody
import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.IdSignature
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
import org.jetbrains.kotlin.types.Variance
@@ -23,6 +24,9 @@ class PersistentIrFactory : IrFactory {
override var stageController = StageController()
@Suppress("UNUSED_PARAMETER")
fun currentSignature(declaration: IrDeclaration): IdSignature? = null
override fun createAnonymousInitializer(
startOffset: Int,
endOffset: Int,
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.expressions.IrBody
import org.jetbrains.kotlin.ir.util.IdSignature
open class StageController(open val currentStage: Int = 0) {
open fun lazyLower(declaration: IrDeclaration) {}
@@ -28,4 +29,7 @@ open class StageController(open val currentStage: Int = 0) {
open fun <T> unrestrictDeclarationListsAccess(fn: () -> T): T = fn()
open fun canAccessDeclarationsOf(irClass: IrClass): Boolean = true
// Used in JS IC. Declarations created during lowerings need meaningful signatures.
open fun createSignature(parentSignature: IdSignature): IdSignature? = null
}