JVM_IR KT-41214 emit PermittedSubclasses on JDK17+
This commit is contained in:
committed by
TeamCityServer
parent
dca4a8e722
commit
146f0f4904
+27
-3
@@ -5,9 +5,23 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.declarations.persistent
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import java.util.ArrayList
|
||||
import java.util.Collections
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.descriptors.InlineClassRepresentation
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
||||
import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
||||
import org.jetbrains.kotlin.ir.declarations.persistent.carriers.Carrier
|
||||
import org.jetbrains.kotlin.ir.declarations.persistent.carriers.ClassCarrier
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
@@ -18,7 +32,6 @@ 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
|
||||
import java.util.*
|
||||
|
||||
// Auto-generated by compiler/ir/ir.tree.persistent/generator/src/org/jetbrains/kotlin/ir/persistentIrGenerator/Main.kt. DO NOT EDIT!
|
||||
|
||||
@@ -164,4 +177,15 @@ internal class PersistentIrClass(
|
||||
}
|
||||
|
||||
override var attributeOwnerId: IrAttributeContainer = this
|
||||
|
||||
override var sealedSubclassesField: List<IrClassSymbol> = emptyList()
|
||||
|
||||
override var sealedSubclasses: List<IrClassSymbol>
|
||||
get() = getCarrier().sealedSubclassesField
|
||||
set(v) {
|
||||
if (sealedSubclasses !== v) {
|
||||
setCarrier()
|
||||
sealedSubclassesField = v
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
||||
@@ -29,6 +30,7 @@ internal interface ClassCarrier : DeclarationCarrier{
|
||||
val typeParametersSymbolField: List<IrTypeParameterSymbol>
|
||||
val superTypesField: List<IrType>
|
||||
val inlineClassRepresentationField: InlineClassRepresentation<IrSimpleType>?
|
||||
val sealedSubclassesField: List<IrClassSymbol>
|
||||
|
||||
override fun clone(): ClassCarrier {
|
||||
return ClassCarrierImpl(
|
||||
@@ -41,7 +43,8 @@ internal interface ClassCarrier : DeclarationCarrier{
|
||||
modalityField,
|
||||
typeParametersSymbolField,
|
||||
superTypesField,
|
||||
inlineClassRepresentationField
|
||||
inlineClassRepresentationField,
|
||||
sealedSubclassesField
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -56,7 +59,8 @@ internal class ClassCarrierImpl(
|
||||
override val modalityField: Modality,
|
||||
override val typeParametersSymbolField: List<IrTypeParameterSymbol>,
|
||||
override val superTypesField: List<IrType>,
|
||||
override val inlineClassRepresentationField: InlineClassRepresentation<IrSimpleType>?
|
||||
override val inlineClassRepresentationField: InlineClassRepresentation<IrSimpleType>?,
|
||||
override val sealedSubclassesField: List<IrClassSymbol>
|
||||
) : ClassCarrier {
|
||||
|
||||
override val thisReceiverField: IrValueParameter?
|
||||
|
||||
+4
-1
@@ -87,6 +87,8 @@ internal abstract class IrCarrierDeserializer {
|
||||
|
||||
abstract fun deserializeSuperType(proto: Int): IrType
|
||||
|
||||
abstract fun deserializeSealedSubclass(proto: Long): IrClassSymbol
|
||||
|
||||
abstract fun deserializeType(proto: Int): IrType
|
||||
|
||||
abstract fun deserializeClass(proto: Long): IrClassSymbol
|
||||
@@ -138,7 +140,8 @@ internal abstract class IrCarrierDeserializer {
|
||||
deserializeModality(proto.flags),
|
||||
proto.typeParametersList.map { deserializeTypeParameter(it) },
|
||||
proto.superTypesList.map { deserializeSuperType(it) },
|
||||
if (proto.hasInlineClassRepresentation()) deserializeInlineClassRepresentation(proto.inlineClassRepresentation) else null
|
||||
if (proto.hasInlineClassRepresentation()) deserializeInlineClassRepresentation(proto.inlineClassRepresentation) else null,
|
||||
proto.sealedSubclassesList.map { deserializeSealedSubclass(it) }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -73,6 +73,8 @@ internal abstract class IrCarrierSerializer {
|
||||
|
||||
abstract fun serializeSuperType(value: IrType): Int
|
||||
|
||||
abstract fun serializeSealedSubclass(value: IrClassSymbol): Long
|
||||
|
||||
abstract fun serializeType(value: IrType): Int
|
||||
|
||||
abstract fun serializeClass(value: IrClassSymbol): Long
|
||||
@@ -122,6 +124,7 @@ internal abstract class IrCarrierSerializer {
|
||||
proto.addAllTypeParameters(carrier.typeParametersSymbolField.map { serializeTypeParameter(it) })
|
||||
proto.addAllSuperTypes(carrier.superTypesField.map { serializeSuperType(it) })
|
||||
carrier.inlineClassRepresentationField?.let { proto.setInlineClassRepresentation(serializeInlineClassRepresentation(it)) }
|
||||
proto.addAllSealedSubclasses(carrier.sealedSubclassesField.map { serializeSealedSubclass(it) })
|
||||
return proto.build().toByteArray()
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -22,6 +22,7 @@ internal fun PersistentIrGenerator.generateClass() {
|
||||
descriptorType("InlineClassRepresentation") + "<" + import("IrSimpleType", "org.jetbrains.kotlin.ir.types") + ">?",
|
||||
inlineClassRepresentationProto
|
||||
)
|
||||
val sealedSubclassesField = Field("sealedSubclasses", +"List<" + irSymbol("IrClassSymbol") + ">", sealedSubclassListProto)
|
||||
|
||||
writeFile("PersistentIrClass.kt", renderFile("org.jetbrains.kotlin.ir.declarations.persistent") {
|
||||
lines(
|
||||
@@ -79,6 +80,7 @@ internal fun PersistentIrGenerator.generateClass() {
|
||||
modalityField.toPersistentField(+"modality"),
|
||||
inlineClassRepresentationField.toPersistentField(+"null"),
|
||||
+"override var attributeOwnerId: " + IrAttributeContainer + " = this",
|
||||
sealedSubclassesField.toPersistentField(+"emptyList()"),
|
||||
),
|
||||
id,
|
||||
)()
|
||||
@@ -93,6 +95,7 @@ internal fun PersistentIrGenerator.generateClass() {
|
||||
typeParametersField,
|
||||
superTypesField,
|
||||
inlineClassRepresentationField,
|
||||
sealedSubclassesField,
|
||||
)()
|
||||
})
|
||||
|
||||
@@ -104,5 +107,6 @@ internal fun PersistentIrGenerator.generateClass() {
|
||||
typeParametersField,
|
||||
superTypesField,
|
||||
inlineClassRepresentationField,
|
||||
sealedSubclassesField,
|
||||
)
|
||||
}
|
||||
|
||||
+2
@@ -152,6 +152,7 @@ internal object PersistentIrGenerator {
|
||||
val valueParameterListProto = Proto("int64", "valueParameter", +"Long", IrValueParameterSymbol, fieldKind = FieldKind.REPEATED)
|
||||
val typeParameterListProto = Proto("int64", "typeParameter", +"Long", IrTypeParameterSymbol, fieldKind = FieldKind.REPEATED)
|
||||
val superTypeListProto = Proto("int32", "superType", +"Int", IrType, fieldKind = FieldKind.REPEATED)
|
||||
val sealedSubclassListProto = Proto("int64", "sealedSubclass", +"Long", IrClassSymbol, fieldKind = FieldKind.REPEATED)
|
||||
val typeProto = Proto("int32", "type", +"Int", IrType, fieldKind = FieldKind.REQUIRED)
|
||||
val optionalTypeProto = Proto("int32", "type", +"Int", IrType, fieldKind = FieldKind.OPTIONAL)
|
||||
val variableProto = Proto("IrVariable", "variable", protoVariable, IrVariable)
|
||||
@@ -187,6 +188,7 @@ internal object PersistentIrGenerator {
|
||||
valueParameterListProto,
|
||||
typeParameterListProto,
|
||||
superTypeListProto,
|
||||
sealedSubclassListProto,
|
||||
typeProto,
|
||||
optionalTypeProto,
|
||||
classProto,
|
||||
|
||||
+4
-1
@@ -30,7 +30,6 @@ internal class IrCarrierDeserializerImpl(
|
||||
val indexToBody: (Int) -> IrBody,
|
||||
val indexToExpressionBody: (Int) -> IrExpressionBody
|
||||
) : IrCarrierDeserializer() {
|
||||
|
||||
override fun deserializeParentSymbol(proto: Long): IrSymbol {
|
||||
return declarationDeserializer.symbolDeserializer.deserializeIrSymbol(proto)
|
||||
}
|
||||
@@ -67,6 +66,10 @@ internal class IrCarrierDeserializerImpl(
|
||||
return declarationDeserializer.deserializeIrType(proto)
|
||||
}
|
||||
|
||||
override fun deserializeSealedSubclass(proto: Long): IrClassSymbol {
|
||||
return declarationDeserializer.symbolDeserializer.deserializeIrSymbol(proto) as IrClassSymbol
|
||||
}
|
||||
|
||||
override fun deserializeType(proto: Int): IrType {
|
||||
return declarationDeserializer.deserializeIrType(proto)
|
||||
}
|
||||
|
||||
+4
@@ -63,6 +63,10 @@ internal class IrCarrierSerializerImpl(val fileSerializer: IrFileSerializer, val
|
||||
return fileSerializer.serializeIrType(value)
|
||||
}
|
||||
|
||||
override fun serializeSealedSubclass(value: IrClassSymbol): Long {
|
||||
return fileSerializer.serializeIrSymbol(value)
|
||||
}
|
||||
|
||||
override fun serializeType(value: IrType): Int {
|
||||
return fileSerializer.serializeIrType(value)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user