JS PIR: store signatures for lowered declarations inside PIR declarations
This commit is contained in:
committed by
Anton Bannykh
parent
e0bdabcf61
commit
bd4e7ffef8
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+2
@@ -24,6 +24,8 @@ internal fun PersistentIrGenerator.generateErrorDeclaration() {
|
||||
+" get() = _descriptor ?: this." + import("toIrBasedDescriptor", "org.jetbrains.kotlin.ir.descriptors") + "()"
|
||||
),
|
||||
id,
|
||||
signature,
|
||||
id,
|
||||
lastModified,
|
||||
loweredUpTo,
|
||||
values,
|
||||
|
||||
+6
@@ -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,
|
||||
|
||||
+3
@@ -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")
|
||||
|
||||
+4
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user