From 1984a1615ebfd5bc374c1432073a7d19b561c172 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 22 Dec 2022 17:40:18 +0200 Subject: [PATCH] [Serialization] Use new DSL for generating declarations --- .../fir/symbols/impl/FirCallableSymbol.kt | 2 +- .../kotlinx-serialization/build.gradle.kts | 1 + .../kotlinx-serialization.k2/build.gradle.kts | 1 + .../compiler/fir/FirBuildersUtils.kt | 80 ------- .../fir/SerializationFirResolveExtension.kt | 195 ++++++------------ .../firMembers/abstractAndSealed.fir.txt | 20 +- .../classWithCompanionObject.fir.txt | 8 +- .../classWithGenericParameters.fir.txt | 10 +- .../firMembers/defaultProperties.fir.txt | 8 +- .../testData/firMembers/enums.fir.txt | 16 +- .../testData/firMembers/inlineClasses.fir.txt | 16 +- .../firMembers/metaSerializable.fir.txt | 84 ++++++-- .../firMembers/multipleProperties.fir.txt | 8 +- .../privatePropertiesSerialization.fir.txt | 16 +- .../firMembers/serializableWith.fir.txt | 4 +- .../serializableWithCompanion.fir.txt | 8 +- .../firMembers/serializerInLocalClass.fir.txt | 8 +- 17 files changed, 219 insertions(+), 266 deletions(-) delete mode 100644 plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/FirBuildersUtils.kt diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt index ae33f6f6ce9..c8b47cf02a7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt @@ -33,7 +33,7 @@ abstract class FirCallableSymbol : FirBasedSymbol return fir.receiverParameter?.typeRef as FirResolvedTypeRef? } - val receiverParameter: FirAnnotationContainer? + val receiverParameter: FirReceiverParameter? get() { ensureType(fir.receiverParameter?.typeRef) return fir.receiverParameter diff --git a/plugins/kotlinx-serialization/build.gradle.kts b/plugins/kotlinx-serialization/build.gradle.kts index a32f4511789..061c8fe302d 100644 --- a/plugins/kotlinx-serialization/build.gradle.kts +++ b/plugins/kotlinx-serialization/build.gradle.kts @@ -20,6 +20,7 @@ dependencies { testApi(projectTests(":compiler:test-infrastructure-utils")) testApi(projectTests(":compiler:tests-compiler-utils")) testApi(projectTests(":compiler:tests-common-new")) + testApi(project(":compiler:fir:plugin-utils")) testImplementation(projectTests(":generators:test-generator")) testApiJUnit5() diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/build.gradle.kts b/plugins/kotlinx-serialization/kotlinx-serialization.k2/build.gradle.kts index e8d586bf5e2..1fd960b06d1 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/build.gradle.kts +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/build.gradle.kts @@ -9,6 +9,7 @@ dependencies { compileOnly(project(":compiler:fir:cones")) compileOnly(project(":compiler:fir:tree")) compileOnly(project(":compiler:fir:resolve")) + compileOnly(project(":compiler:fir:plugin-utils")) compileOnly(project(":compiler:fir:entrypoint")) compileOnly(project(":js:js.config")) compileOnly(project(":compiler:cli-common")) diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/FirBuildersUtils.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/FirBuildersUtils.kt deleted file mode 100644 index 3ef52bfe321..00000000000 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/FirBuildersUtils.kt +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlinx.serialization.compiler.fir - -import org.jetbrains.kotlin.GeneratedDeclarationKey -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.containingClassForStaticMemberAttr -import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.declarations.builder.buildPrimaryConstructor -import org.jetbrains.kotlin.fir.declarations.builder.buildTypeParameter -import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter -import org.jetbrains.kotlin.fir.declarations.utils.addDefaultBoundIfNecessary -import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension -import org.jetbrains.kotlin.fir.moduleData -import org.jetbrains.kotlin.fir.resolve.defaultType -import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider -import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol -import org.jetbrains.kotlin.fir.symbols.SymbolInternals -import org.jetbrains.kotlin.fir.symbols.impl.* -import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef -import org.jetbrains.kotlin.fir.types.toFirResolvedTypeRef -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.types.Variance - - -// FIXME KT-53096: this has to be shared (copied from plugin example) -@OptIn(SymbolInternals::class) -fun FirDeclarationGenerationExtension.buildPrimaryConstructor(owner: FirClassSymbol<*>, isInner: Boolean, key: GeneratedDeclarationKey, status: FirDeclarationStatus): FirConstructor { - val classId = owner.classId - val lookupTag = owner.toLookupTag() - return buildPrimaryConstructor { - moduleData = session.moduleData - origin = key.origin - returnTypeRef = run { - owner.defaultType().toFirResolvedTypeRef() - } - this.status = status - symbol = FirConstructorSymbol(classId) - if (isInner && classId.isNestedClass) { - dispatchReceiverType = classId.parentClassId?.let { - val firClass = session.symbolProvider.getClassLikeSymbolByClassId(it)?.fir as? FirClass - firClass?.defaultType() - } - } - }.also { - it.containingClassForStaticMemberAttr = lookupTag - } -} - -fun newSimpleTypeParameter(firSession: FirSession, containingDeclarationSymbol: FirBasedSymbol<*>, name: Name) = buildTypeParameter { - moduleData = firSession.moduleData - origin = SerializationPluginKey.origin - resolvePhase = FirResolvePhase.BODY_RESOLVE - variance = Variance.INVARIANT - this.name = name - symbol = FirTypeParameterSymbol() - this.containingDeclarationSymbol = containingDeclarationSymbol - isReified = false - addDefaultBoundIfNecessary() -} - -fun newSimpleValueParameter( - firSession: FirSession, - typeRef: FirResolvedTypeRef, - functionSymbol: FirFunctionSymbol<*>, - name: Name -) = buildValueParameter { - moduleData = firSession.moduleData - this.containingFunctionSymbol = functionSymbol - origin = SerializationPluginKey.origin - this.name = name - this.symbol = FirValueParameterSymbol(this.name) - returnTypeRef = typeRef - isCrossinline = false - isNoinline = false - isVararg = false -} diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt index d7bdd69f63e..4cb01da68fa 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirResolveExtension.kt @@ -6,22 +6,17 @@ package org.jetbrains.kotlinx.serialization.compiler.fir import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.descriptors.EffectiveVisibility import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.checkers.getContainingDeclarationSymbol -import org.jetbrains.kotlin.fir.containingClassForLocalAttr import org.jetbrains.kotlin.fir.copy import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin -import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.builder.* -import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.origin import org.jetbrains.kotlin.fir.declarations.utils.isCompanion -import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.fir.extensions.* -import org.jetbrains.kotlin.fir.moduleData +import org.jetbrains.kotlin.fir.plugin.* import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.scopes.* @@ -29,7 +24,6 @@ import org.jetbrains.kotlin.fir.scopes.impl.toConeType import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.* -import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name @@ -186,167 +180,102 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene serializableClassSymbol: FirClassSymbol<*>, callableId: CallableId ): FirNamedFunctionSymbol { - val f = buildSimpleFunction { - moduleData = session.moduleData - symbol = FirNamedFunctionSymbol(callableId) - origin = SerializationPluginKey.origin - status = FirResolvedDeclarationStatusImpl( - Visibilities.Public, - Modality.FINAL, - EffectiveVisibility.Public - ) - name = callableId.callableName - dispatchReceiverType = owner.defaultType() - - typeParameters.addAll(serializableClassSymbol.typeParameterSymbols.map { newSimpleTypeParameter(session, symbol, it.name) }) - val parametersAsArguments = typeParameters.map { it.toConeType() }.toTypedArray() - - valueParameters.addAll(List(serializableClassSymbol.typeParameterSymbols.size) { i -> - newSimpleValueParameter( - session, - kSerializerId.constructClassLikeType(arrayOf(parametersAsArguments[i]), false).toFirResolvedTypeRef(), - symbol, - Name.identifier("${SerialEntityNames.typeArgPrefix}$i") - ) - }) - - - returnTypeRef = buildResolvedTypeRef { - type = kSerializerId.constructClassLikeType( + val function = createMemberFunction( + owner, + SerializationPluginKey, + callableId.callableName, + returnTypeProvider = { typeParameters -> + val parametersAsArguments = typeParameters.map { it.toConeType() }.toTypedArray() + kSerializerId.constructClassLikeType( arrayOf(serializableClassSymbol.constructType(parametersAsArguments, false)), isNullable = false ) } + ) { + serializableClassSymbol.typeParameterSymbols.forEachIndexed { i, typeParameterSymbol -> + typeParameter(typeParameterSymbol.name) + valueParameter( + Name.identifier("${SerialEntityNames.typeArgPrefix}$i"), + { typeParameters -> + kSerializerId.constructClassLikeType(arrayOf(typeParameters[i].toConeType()), false) + } + ) + } } - return f.symbol + + return function.symbol } - @OptIn(SymbolInternals::class) override fun generateProperties(callableId: CallableId, context: MemberGenerationContext?): List { val owner = context?.owner ?: return emptyList() if (!owner.isSerializer) return emptyList() if (callableId.callableName != SerialEntityNames.SERIAL_DESC_FIELD_NAME) return emptyList() val target = getFromSupertype(callableId, owner) { it.getProperties(callableId.callableName).filterIsInstance() } - val original = target.fir - val copy = buildPropertyCopy(original) { - symbol = FirPropertySymbol(callableId) - origin = SerializationPluginKey.origin - status = original.status.copy(modality = Modality.FINAL) - getter = buildPropertyAccessor { - status = original.status.copy(modality = Modality.FINAL) - symbol = FirPropertyAccessorSymbol() - origin = SerializationPluginKey.origin - moduleData = session.moduleData - isGetter = true - returnTypeRef = original.returnTypeRef - dispatchReceiverType = owner.defaultType() - propertySymbol = this@buildPropertyCopy.symbol - } - } - return listOf(copy.symbol) + val property = createMemberProperty( + owner, + SerializationPluginKey, + callableId.callableName, + target.resolvedReturnType + ) + + return listOf(property.symbol) } override fun generateConstructors(context: MemberGenerationContext): List { val owner = context.owner - val defaultObjectConstructor = buildPrimaryConstructor( - owner, isInner = false, SerializationPluginKey, status = FirResolvedDeclarationStatusImpl( - Visibilities.Private, - Modality.FINAL, - EffectiveVisibility.PrivateInClass - ) - ) + + val result = mutableListOf() + result += createDefaultPrivateConstructor(owner, SerializationPluginKey).symbol + if (owner.name == SerialEntityNames.SERIALIZER_CLASS_NAME && owner.typeParameterSymbols.isNotEmpty()) { - val parameterizedConstructor = buildConstructor { - moduleData = session.moduleData - origin = SerializationPluginKey.origin - returnTypeRef = defaultObjectConstructor.returnTypeRef - symbol = FirConstructorSymbol(owner.classId) - dispatchReceiverType = defaultObjectConstructor.dispatchReceiverType - status = FirResolvedDeclarationStatusImpl( - Visibilities.Private, - Modality.FINAL, - EffectiveVisibility.PrivateInFile // accessed from a companion - ) - valueParameters.addAll(owner.typeParameterSymbols.mapIndexed { i, typeParam -> - newSimpleValueParameter( - session, - kSerializerId.constructClassLikeType(arrayOf(typeParam.toConeType()), false).toFirResolvedTypeRef(), - symbol, - Name.identifier("${SerialEntityNames.typeArgPrefix}$i") + result += createConstructor(owner, SerializationPluginKey) { + visibility = Visibilities.Private + owner.typeParameterSymbols.forEachIndexed { i, typeParam -> + valueParameter( + name = Name.identifier("${SerialEntityNames.typeArgPrefix}$i"), + type = kSerializerId.constructClassLikeType(arrayOf(typeParam.toConeType()), false) ) - }) - } - return listOf(defaultObjectConstructor.symbol, parameterizedConstructor.symbol) + } + }.symbol } - return listOf(defaultObjectConstructor.symbol) + return result } private fun generateSerializerImplClass(owner: FirRegularClassSymbol): FirClassLikeSymbol<*> { val hasTypeParams = owner.typeParameterSymbols.isNotEmpty() val serializerKind = if (hasTypeParams) ClassKind.CLASS else ClassKind.OBJECT - val serializerFirClass = buildRegularClass { - moduleData = session.moduleData - origin = SerializationPluginKey.origin - classKind = serializerKind - scopeProvider = session.kotlinScopeProvider - name = SerialEntityNames.SERIALIZER_CLASS_NAME - symbol = FirRegularClassSymbol(owner.classId.createNestedClassId(name)) - status = FirResolvedDeclarationStatusImpl( - Visibilities.Public, - Modality.FINAL, - EffectiveVisibility.Public - ) - // TODO: add deprecate hidden -// annotations = listOf(Annotations.create(listOf(KSerializerDescriptorResolver.createDeprecatedHiddenAnnotation(thisDescriptor.module)))) + val serializerFirClass = createNestedClass(owner, SerialEntityNames.SERIALIZER_CLASS_NAME, SerializationPluginKey, serializerKind) { + for (parameter in owner.typeParameterSymbols) { + typeParameter(parameter.name) + } + superType { typeParameters -> + generatedSerializerId.constructClassLikeType( + arrayOf( + owner.constructType( + typeParameters.map { it.toConeType() }.toTypedArray(), + isNullable = false + ) + ), + isNullable = false + ) + } + } + // TODO: add deprecate hidden + // serializerFirClass.replaceAnnotations(listOf(Annotations.create(listOf(KSerializerDescriptorResolver.createDeprecatedHiddenAnnotation(thisDescriptor.module))))) - - typeParameters.addAll(owner.typeParameterSymbols.map { param -> - newSimpleTypeParameter(session, symbol, param.name) - }) - - val parametersAsArguments = typeParameters.map { it.toConeType() }.toTypedArray() - superTypeRefs += generatedSerializerId.constructClassLikeType( - arrayOf( - owner.constructType( - parametersAsArguments, - isNullable = false - ) - ), isNullable = false - ).toFirResolvedTypeRef() - }.also { it.initLocalAttributeIfNeeded(owner) } return serializerFirClass.symbol } private fun generateCompanionDeclaration(owner: FirRegularClassSymbol): FirRegularClassSymbol? { if (owner.companionObjectSymbol != null) return null - val regularClass = buildRegularClass { - moduleData = session.moduleData - origin = SerializationPluginKey.origin - classKind = ClassKind.OBJECT - scopeProvider = session.kotlinScopeProvider - status = FirResolvedDeclarationStatusImpl( - Visibilities.Public, - Modality.FINAL, - EffectiveVisibility.Public - ).apply { - isCompanion = true - } - name = SpecialNames.DEFAULT_NAME_FOR_COMPANION_OBJECT - symbol = FirRegularClassSymbol(owner.classId.createNestedClassId(name)) - superTypeRefs += session.builtinTypes.anyType + val companion = createCompanionObject(owner, SerializationPluginKey) { if (with(session) { owner.companionNeedsSerializerFactory }) { val serializerFactoryClassId = ClassId(SerializationPackages.internalPackageFqName, SERIALIZER_FACTORY_INTERFACE_NAME) - superTypeRefs += serializerFactoryClassId.constructClassLikeType(emptyArray(), false).toFirResolvedTypeRef() + superType(serializerFactoryClassId.constructClassLikeType(emptyArray(), false)) } - }.also { it.initLocalAttributeIfNeeded(owner) } - return regularClass.symbol - } - - private fun FirRegularClass.initLocalAttributeIfNeeded(owner: FirRegularClassSymbol) { - if (owner.isLocal) { - this.containingClassForLocalAttr = owner.toLookupTag() } + return companion.symbol } override fun FirDeclarationPredicateRegistrar.registerPredicates() { diff --git a/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.fir.txt index b7122cb08bc..35569b8677b 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/abstractAndSealed.fir.txt @@ -3,7 +3,9 @@ FILE: abstractAndSealed.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|I.Companion| + private constructor(): R|I.Companion| { + super() + } } @@ -24,7 +26,9 @@ FILE: abstractAndSealed.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|X.Companion| + private constructor(): R|X.Companion| { + super() + } } @@ -45,7 +49,9 @@ FILE: abstractAndSealed.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Y.Companion| + private constructor(): R|Y.Companion| { + super() + } } @@ -58,7 +64,9 @@ FILE: abstractAndSealed.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Bottom.Companion| + private constructor(): R|Bottom.Companion| { + super() + } } @@ -72,7 +80,9 @@ FILE: abstractAndSealed.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Bottom.$serializer| + private constructor(): R|Bottom.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/classWithCompanionObject.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/classWithCompanionObject.fir.txt index 4ee8df252db..c128282db6e 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/classWithCompanionObject.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/classWithCompanionObject.fir.txt @@ -10,7 +10,9 @@ FILE: classWithCompanionObject.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|SomeClass.Companion| + private constructor(): R|SomeClass.Companion| { + super() + } } @@ -24,7 +26,9 @@ FILE: classWithCompanionObject.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|SomeClass.$serializer| + private constructor(): R|SomeClass.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt index 718d7a20bf4..8bff876c723 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/classWithGenericParameters.fir.txt @@ -16,7 +16,9 @@ FILE: classWithGenericParameters.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(typeSerial0: R|kotlinx/serialization/KSerializer|, typeSerial1: R|kotlinx/serialization/KSerializer|): R|kotlinx/serialization/KSerializer>| - private constructor(): R|GenericBox.Companion| + private constructor(): R|GenericBox.Companion| { + super() + } } @@ -32,9 +34,11 @@ FILE: classWithGenericParameters.kt public final fun typeParametersSerializers(): R|kotlin/Array>| - private constructor(): R|GenericBox.$serializer| + private constructor(): R|GenericBox.$serializer| { + super() + } - private constructor(typeSerial0: R|kotlinx/serialization/KSerializer|, typeSerial1: R|kotlinx/serialization/KSerializer|): R|GenericBox.$serializer| + private constructor(typeSerial0: R|kotlinx/serialization/KSerializer|, typeSerial1: R|kotlinx/serialization/KSerializer|): R|GenericBox.$serializer| } diff --git a/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.fir.txt index d490380085e..d5e339be031 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/defaultProperties.fir.txt @@ -27,7 +27,9 @@ FILE: defaultProperties.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|SomeClass.Companion| + private constructor(): R|SomeClass.Companion| { + super() + } } @@ -41,7 +43,9 @@ FILE: defaultProperties.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|SomeClass.$serializer| + private constructor(): R|SomeClass.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt index c6816e6c2a1..e26c94fd16e 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/enums.fir.txt @@ -47,7 +47,9 @@ FILE: enums.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|WithNames.Companion| + private constructor(): R|WithNames.Companion| { + super() + } } @@ -61,7 +63,9 @@ FILE: enums.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|WithNames.$serializer| + private constructor(): R|WithNames.$serializer| { + super() + } } @@ -80,7 +84,9 @@ FILE: enums.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Holder.Companion| + private constructor(): R|Holder.Companion| { + super() + } } @@ -94,7 +100,9 @@ FILE: enums.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Holder.$serializer| + private constructor(): R|Holder.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.fir.txt index 6652dd58bb9..23e4b5d4c2d 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/inlineClasses.fir.txt @@ -10,7 +10,9 @@ FILE: inlineClasses.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Foo.Companion| + private constructor(): R|Foo.Companion| { + super() + } } @@ -24,7 +26,9 @@ FILE: inlineClasses.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Foo.$serializer| + private constructor(): R|Foo.$serializer| { + super() + } } @@ -40,7 +44,9 @@ FILE: inlineClasses.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Holder.Companion| + private constructor(): R|Holder.Companion| { + super() + } } @@ -54,7 +60,9 @@ FILE: inlineClasses.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Holder.$serializer| + private constructor(): R|Holder.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/metaSerializable.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/metaSerializable.fir.txt index 0cfe2408a9b..3eb7a682689 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/metaSerializable.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/metaSerializable.fir.txt @@ -31,7 +31,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Project1.Companion| + private constructor(): R|Project1.Companion| { + super() + } } @@ -45,7 +47,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Project1.$serializer| + private constructor(): R|Project1.$serializer| { + super() + } } @@ -64,7 +68,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Project2.Companion| + private constructor(): R|Project2.Companion| { + super() + } } @@ -78,7 +84,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Project2.$serializer| + private constructor(): R|Project2.$serializer| { + super() + } } @@ -94,7 +102,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Wrapper.Companion| + private constructor(): R|Wrapper.Companion| { + super() + } } @@ -108,7 +118,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Wrapper.$serializer| + private constructor(): R|Wrapper.$serializer| { + super() + } } @@ -127,7 +139,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Project3.Companion| + private constructor(): R|Project3.Companion| { + super() + } } @@ -141,7 +155,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Project3.$serializer| + private constructor(): R|Project3.$serializer| { + super() + } } @@ -160,7 +176,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Project4.Companion| + private constructor(): R|Project4.Companion| { + super() + } } @@ -181,7 +199,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|TestSealed.A.Companion| + private constructor(): R|TestSealed.A.Companion| { + super() + } } @@ -195,7 +215,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|TestSealed.A.$serializer| + private constructor(): R|TestSealed.A.$serializer| { + super() + } } @@ -212,7 +234,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|TestSealed.B.Companion| + private constructor(): R|TestSealed.B.Companion| { + super() + } } @@ -226,7 +250,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|TestSealed.B.$serializer| + private constructor(): R|TestSealed.B.$serializer| { + super() + } } @@ -235,7 +261,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|TestSealed.Companion| + private constructor(): R|TestSealed.Companion| { + super() + } } @@ -256,7 +284,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|TestAbstract.A.Companion| + private constructor(): R|TestAbstract.A.Companion| { + super() + } } @@ -270,7 +300,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|TestAbstract.A.$serializer| + private constructor(): R|TestAbstract.A.$serializer| { + super() + } } @@ -287,7 +319,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|TestAbstract.B.Companion| + private constructor(): R|TestAbstract.B.Companion| { + super() + } } @@ -301,7 +335,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|TestAbstract.B.$serializer| + private constructor(): R|TestAbstract.B.$serializer| { + super() + } } @@ -310,7 +346,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|TestAbstract.Companion| + private constructor(): R|TestAbstract.Companion| { + super() + } } @@ -334,7 +372,9 @@ FILE: metaSerializable.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|TestEnum.Companion| + private constructor(): R|TestEnum.Companion| { + super() + } } @@ -348,7 +388,9 @@ FILE: metaSerializable.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|TestEnum.$serializer| + private constructor(): R|TestEnum.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.fir.txt index 3ca2c9223ec..0331f2692e0 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/multipleProperties.fir.txt @@ -19,7 +19,9 @@ FILE: multipleProperties.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|SomeClass.Companion| + private constructor(): R|SomeClass.Companion| { + super() + } } @@ -33,7 +35,9 @@ FILE: multipleProperties.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|SomeClass.$serializer| + private constructor(): R|SomeClass.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.fir.txt index b9fa68c54e2..46494552a5e 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/privatePropertiesSerialization.fir.txt @@ -30,7 +30,9 @@ FILE: privatePropertiesSerialization.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Parent.Companion| + private constructor(): R|Parent.Companion| { + super() + } } @@ -44,7 +46,9 @@ FILE: privatePropertiesSerialization.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Parent.$serializer| + private constructor(): R|Parent.$serializer| { + super() + } } @@ -57,7 +61,9 @@ FILE: privatePropertiesSerialization.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Derived.Companion| + private constructor(): R|Derived.Companion| { + super() + } } @@ -71,7 +77,9 @@ FILE: privatePropertiesSerialization.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Derived.$serializer| + private constructor(): R|Derived.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/serializableWith.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/serializableWith.fir.txt index 600a05652dc..4e8dedeb4d9 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/serializableWith.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/serializableWith.fir.txt @@ -46,7 +46,9 @@ FILE: serializableWith.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|IntHolder.Companion| + private constructor(): R|IntHolder.Companion| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/serializableWithCompanion.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/serializableWithCompanion.fir.txt index 75ba0e2a5fb..ad91778123b 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/serializableWithCompanion.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/serializableWithCompanion.fir.txt @@ -53,7 +53,9 @@ FILE: serializableWithCompanion.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|com/example/WithCompanion.$serializer| + private constructor(): R|com/example/WithCompanion.$serializer| { + super() + } } @@ -93,7 +95,9 @@ FILE: serializableWithCompanion.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|com/example/WithNamedCompanion.$serializer| + private constructor(): R|com/example/WithNamedCompanion.$serializer| { + super() + } } diff --git a/plugins/kotlinx-serialization/testData/firMembers/serializerInLocalClass.fir.txt b/plugins/kotlinx-serialization/testData/firMembers/serializerInLocalClass.fir.txt index 3ef3cd5787a..107ca2be168 100644 --- a/plugins/kotlinx-serialization/testData/firMembers/serializerInLocalClass.fir.txt +++ b/plugins/kotlinx-serialization/testData/firMembers/serializerInLocalClass.fir.txt @@ -15,7 +15,9 @@ FILE: serializerInLocalClass.kt public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| - private constructor(): R|Carrier.Companion| + private constructor(): R|Carrier.Companion| { + super() + } } @@ -29,7 +31,9 @@ FILE: serializerInLocalClass.kt public final fun childSerializers(): R|kotlin/Array>| - private constructor(): R|Carrier.$serializer| + private constructor(): R|Carrier.$serializer| { + super() + } }