Hide stageController into the IrFactory

This commit is contained in:
Anton Bannykh
2020-11-05 14:42:48 +03:00
parent 97080c49fc
commit c06b345f3c
59 changed files with 209 additions and 208 deletions
@@ -18,6 +18,7 @@ internal fun PersistentIrGenerator.generateAnonymousInitializer() {
origin,
+"override val symbol: " + IrAnonymousInitializerSymbol,
isStatic + " = false",
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("AnonymousInitializer") + " " + blockSpaced(
initBlock,
@@ -36,6 +36,7 @@ internal fun PersistentIrGenerator.generateClass() {
isExpect + " = false",
isFun,
source,
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("Class") + " " + blockSpaced(
initBlock,
@@ -49,12 +50,12 @@ internal fun PersistentIrGenerator.generateClass() {
+"override val declarations: MutableList<IrDeclaration> = " + import("ArrayList", "java.util") + "()",
lines(
+"get() " + block(
+"if (createdOn < stageController.currentStage && initialDeclarations == null) " + block(
+"if (createdOn < factory.stageController.currentStage && initialDeclarations == null) " + block(
+"initialDeclarations = " + import("Collections", "java.util") + ".unmodifiableList(ArrayList(field))"
),
id,
+"""
return if (stageController.canAccessDeclarationsOf(this)) {
return if (factory.stageController.canAccessDeclarationsOf(this)) {
ensureLowered()
field
} else {
@@ -33,6 +33,7 @@ internal fun PersistentIrGenerator.generateConstructor() {
isPrimary,
isExpect,
containerSource,
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("Constructor") + " " + blockSpaced(
initBlock,
@@ -19,6 +19,7 @@ internal fun PersistentIrGenerator.generateEnumEntry() {
origin,
+"override val symbol: " + irSymbol("IrEnumEntrySymbol"),
name,
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("EnumEntry") + " " + blockSpaced(
initBlock,
@@ -15,7 +15,8 @@ internal fun PersistentIrGenerator.generateErrorDeclaration() {
arrayOf(
startOffset,
endOffset,
+"private val _descriptor: " + DeclarationDescriptor + "?"
+"private val _descriptor: " + DeclarationDescriptor + "?",
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("ErrorDeclaration") + " " + block(
lines(
@@ -27,6 +27,7 @@ internal fun PersistentIrGenerator.generateField() {
isFinal,
isExternal,
isStatic,
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("Field") + " " + blockSpaced(
initBlock,
@@ -39,6 +39,7 @@ internal fun PersistentIrGenerator.generateFunction() {
+"override val isInfix: Boolean",
isExpect,
containerSource + " = null",
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("Function", baseClass = "IrSimpleFunction") + " " + blockSpaced(
commonFields,
@@ -25,6 +25,7 @@ internal fun PersistentIrGenerator.generateLocalDelegatedProperty() {
name,
+"type: " + IrType,
+"override val isVar: Boolean",
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("LocalDelegatedProperty") + " " + blockSpaced(
initBlock,
@@ -53,8 +53,6 @@ internal object PersistentIrGenerator {
val ObsoleteDescriptorBasedAPI = import("ObsoleteDescriptorBasedAPI", "org.jetbrains.kotlin.ir")
val stageController = import("stageController", "org.jetbrains.kotlin.ir.declarations")
val IrType = import("IrType", "org.jetbrains.kotlin.ir.types")
val IrPropertySymbol = irSymbol("IrPropertySymbol")
@@ -82,15 +80,17 @@ internal object PersistentIrGenerator {
val isPrimary = +"override val isPrimary: Boolean"
val containerSource = +"override val containerSource: " + import("DeserializedContainerSource", "org.jetbrains.kotlin.serialization.deserialization.descriptors") + "?"
val irFactory = +"override val factory: PersistentIrFactory"
val initBlock = +"init " + block(
+"symbol.bind(this)"
)
// Fields
val lastModified = +"override var lastModified: Int = " + stageController + ".currentStage"
val loweredUpTo = +"override var loweredUpTo: Int = " + stageController + ".currentStage"
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"
val createdOn = +"override val createdOn: Int = " + stageController + ".currentStage"
val createdOn = +"override val createdOn: Int = factory.stageController.currentStage"
val parentField = +"override var parentField: " + IrDeclarationParent + "? = null"
val originField = +"override var originField: " + IrDeclarationOrigin + " = origin"
@@ -29,7 +29,8 @@ internal fun PersistentIrGenerator.generateProperty() {
+"override val isDelegated: Boolean",
isExternal,
isExpect,
containerSource
containerSource,
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("Property") + " " + blockSpaced(
commonFields,
@@ -22,6 +22,7 @@ internal fun PersistentIrGenerator.generateTypeAlias() {
+"expandedType: " + IrType,
+"override val isActual: Boolean",
origin,
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("TypeAlias") + " " + blockSpaced(
initBlock,
@@ -20,7 +20,8 @@ internal fun PersistentIrGenerator.generateTypeParameter() {
name,
+"override val index: Int",
+"override val isReified: Boolean",
+"override val variance: " + import("Variance", "org.jetbrains.kotlin.types")
+"override val variance: " + import("Variance", "org.jetbrains.kotlin.types"),
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("TypeParameter") + " " + blockSpaced(
initBlock,
@@ -27,7 +27,8 @@ internal fun PersistentIrGenerator.generateValueParameter() {
+"override val isCrossinline: Boolean",
+"override val isNoinline: Boolean",
+"override val isHidden: Boolean",
+"override val isAssignable: Boolean"
+"override val isAssignable: Boolean",
irFactory,
).join(separator = ",\n").indent(),
+") : " + baseClasses("ValueParameter") + " " + blockSpaced(
descriptor(descriptorType("ParameterDescriptor")),