[K2 Serialization] Remove obsolete formatting suppression
This commit is contained in:
committed by
Space Team
parent
fb97f4db87
commit
5ccf1eddab
-1
@@ -309,7 +309,6 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene
|
|||||||
get() = session.predicateBasedProvider.matches(FirSerializationPredicates.serializerFor, this)
|
get() = session.predicateBasedProvider.matches(FirSerializationPredicates.serializerFor, this)
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private val FirClassSymbol<*>.companionNeedsSerializerFactory: Boolean
|
private val FirClassSymbol<*>.companionNeedsSerializerFactory: Boolean
|
||||||
get() {
|
get() {
|
||||||
if (!(moduleData.platform.isNative() || moduleData.platform.isJs())) return false
|
if (!(moduleData.platform.isNative() || moduleData.platform.isJs())) return false
|
||||||
|
|||||||
-2
@@ -36,7 +36,6 @@ class SerializationFirSupertypesExtension(session: FirSession) : FirSupertypeGen
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(TypeResolveServiceContainer)
|
context(TypeResolveServiceContainer)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
override fun computeAdditionalSupertypes(
|
override fun computeAdditionalSupertypes(
|
||||||
classLikeDeclaration: FirClassLikeDeclaration,
|
classLikeDeclaration: FirClassLikeDeclaration,
|
||||||
resolvedSupertypes: List<FirResolvedTypeRef>
|
resolvedSupertypes: List<FirResolvedTypeRef>
|
||||||
@@ -59,7 +58,6 @@ class SerializationFirSupertypesExtension(session: FirSession) : FirSupertypeGen
|
|||||||
|
|
||||||
// Function helps to resolve class call from annotation argument to `ConeKotlinType`
|
// Function helps to resolve class call from annotation argument to `ConeKotlinType`
|
||||||
context(TypeResolveServiceContainer)
|
context(TypeResolveServiceContainer)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun resolveConeTypeFromArgument(getClassCall: FirGetClassCall): ConeKotlinType {
|
private fun resolveConeTypeFromArgument(getClassCall: FirGetClassCall): ConeKotlinType {
|
||||||
val typeToResolve = buildUserTypeFromQualifierParts(isMarkedNullable = false) {
|
val typeToResolve = buildUserTypeFromQualifierParts(isMarkedNullable = false) {
|
||||||
fun visitQualifiers(expression: FirExpression) {
|
fun visitQualifiers(expression: FirExpression) {
|
||||||
|
|||||||
+2
-18
@@ -8,29 +8,21 @@ package org.jetbrains.kotlinx.serialization.compiler.fir
|
|||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.arguments
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.createSubstitutionForSupertype
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirExtension
|
import org.jetbrains.kotlin.fir.extensions.FirExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
||||||
import org.jetbrains.kotlin.fir.moduleData
|
import org.jetbrains.kotlin.fir.moduleData
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.createSubstitutionForSupertype
|
||||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ChainedSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ChainedSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.platformSpecificOverridabilityRules
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -79,7 +71,6 @@ fun FirBasedSymbol<*>.getSerialTransientAnnotation(session: FirSession): FirAnno
|
|||||||
getAnnotationByClassId(SerializationAnnotations.serialTransientClassId, session)
|
getAnnotationByClassId(SerializationAnnotations.serialTransientClassId, session)
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
val FirClassSymbol<*>.hasSerializableAnnotation: Boolean
|
val FirClassSymbol<*>.hasSerializableAnnotation: Boolean
|
||||||
get() = serializableAnnotation(needArguments = false, this@FirSession) != null
|
get() = serializableAnnotation(needArguments = false, this@FirSession) != null
|
||||||
|
|
||||||
@@ -128,17 +119,14 @@ internal fun FirClassLikeDeclaration.getSerializerFor(session: FirSession): FirG
|
|||||||
?.getGetKClassArgument(AnnotationParameterNames.FOR_CLASS)
|
?.getGetKClassArgument(AnnotationParameterNames.FOR_CLASS)
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.isInternallySerializableObject: Boolean
|
internal val FirClassSymbol<*>.isInternallySerializableObject: Boolean
|
||||||
get() = classKind.isObject && hasSerializableOrMetaAnnotationWithoutArgs
|
get() = classKind.isObject && hasSerializableOrMetaAnnotationWithoutArgs
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.isSerializableObject: Boolean
|
internal val FirClassSymbol<*>.isSerializableObject: Boolean
|
||||||
get() = classKind.isObject && hasSerializableOrMetaAnnotation
|
get() = classKind.isObject && hasSerializableOrMetaAnnotation
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.isSealedSerializableInterface: Boolean
|
internal val FirClassSymbol<*>.isSealedSerializableInterface: Boolean
|
||||||
get() = classKind.isInterface && rawStatus.modality == Modality.SEALED && hasSerializableOrMetaAnnotation
|
get() = classKind.isInterface && rawStatus.modality == Modality.SEALED && hasSerializableOrMetaAnnotation
|
||||||
|
|
||||||
@@ -151,7 +139,6 @@ val FirClassSymbol<*>.hasMetaSerializableAnnotation: Boolean
|
|||||||
get() = predicateBasedProvider.matches(FirSerializationPredicates.hasMetaAnnotation, this)
|
get() = predicateBasedProvider.matches(FirSerializationPredicates.hasMetaAnnotation, this)
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.shouldHaveGeneratedMethodsInCompanion: Boolean
|
internal val FirClassSymbol<*>.shouldHaveGeneratedMethodsInCompanion: Boolean
|
||||||
get() = isSerializableObject
|
get() = isSerializableObject
|
||||||
|| isSerializableEnum
|
|| isSerializableEnum
|
||||||
@@ -159,7 +146,6 @@ internal val FirClassSymbol<*>.shouldHaveGeneratedMethodsInCompanion: Boolean
|
|||||||
|| isSealedSerializableInterface
|
|| isSealedSerializableInterface
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.isInternalSerializable: Boolean
|
internal val FirClassSymbol<*>.isInternalSerializable: Boolean
|
||||||
get() {
|
get() {
|
||||||
if (!classKind.isClass) return false
|
if (!classKind.isClass) return false
|
||||||
@@ -172,7 +158,6 @@ val FirClassSymbol<*>.hasSerializableOrMetaAnnotationWithoutArgs: Boolean
|
|||||||
(!hasSerializableAnnotation && hasMetaSerializableAnnotation)
|
(!hasSerializableAnnotation && hasMetaSerializableAnnotation)
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.isAbstractOrSealedSerializableClass: Boolean
|
internal val FirClassSymbol<*>.isAbstractOrSealedSerializableClass: Boolean
|
||||||
get() = isInternalSerializable && (rawStatus.modality == Modality.ABSTRACT || rawStatus.modality == Modality.SEALED)
|
get() = isInternalSerializable && (rawStatus.modality == Modality.ABSTRACT || rawStatus.modality == Modality.SEALED)
|
||||||
|
|
||||||
@@ -180,7 +165,6 @@ internal val FirClassSymbol<*>.isAbstractOrSealedSerializableClass: Boolean
|
|||||||
* Check that class is enum and marked by `Serializable` or meta-serializable annotation.
|
* Check that class is enum and marked by `Serializable` or meta-serializable annotation.
|
||||||
*/
|
*/
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.isSerializableEnum: Boolean
|
internal val FirClassSymbol<*>.isSerializableEnum: Boolean
|
||||||
get() = classKind.isEnumClass && hasSerializableOrMetaAnnotation
|
get() = classKind.isEnumClass && hasSerializableOrMetaAnnotation
|
||||||
|
|
||||||
|
|||||||
+5
-23
@@ -8,7 +8,9 @@ package org.jetbrains.kotlinx.serialization.compiler.fir.checkers
|
|||||||
import org.jetbrains.kotlin.KtSourceElement
|
import org.jetbrains.kotlin.KtSourceElement
|
||||||
import org.jetbrains.kotlin.config.KotlinCompilerVersion
|
import org.jetbrains.kotlin.config.KotlinCompilerVersion
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.diagnostics.*
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
|
import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies
|
||||||
|
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.containsRepeatableAnnotation
|
import org.jetbrains.kotlin.fir.analysis.checkers.containsRepeatableAnnotation
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirClassChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirClassChecker
|
||||||
@@ -22,13 +24,13 @@ import org.jetbrains.kotlin.fir.resolve.defaultType
|
|||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.jvm.annotations.TRANSIENT_ANNOTATION_CLASS_ID
|
import org.jetbrains.kotlin.resolve.jvm.annotations.TRANSIENT_ANNOTATION_CLASS_ID
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.diagnostic.RuntimeVersions
|
import org.jetbrains.kotlinx.serialization.compiler.diagnostic.RuntimeVersions
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.*
|
import org.jetbrains.kotlinx.serialization.compiler.fir.*
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.checkers.FirSerializationErrors.EXTERNAL_SERIALIZER_USELESS
|
import org.jetbrains.kotlinx.serialization.compiler.fir.checkers.FirSerializationErrors.EXTERNAL_SERIALIZER_USELESS
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.getSerializerForClass
|
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.services.dependencySerializationInfoProvider
|
import org.jetbrains.kotlinx.serialization.compiler.fir.services.dependencySerializationInfoProvider
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.services.findTypeSerializerOrContextUnchecked
|
import org.jetbrains.kotlinx.serialization.compiler.fir.services.findTypeSerializerOrContextUnchecked
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.services.serializablePropertiesProvider
|
import org.jetbrains.kotlinx.serialization.compiler.fir.services.serializablePropertiesProvider
|
||||||
@@ -84,7 +86,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkExternalSerializer(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
private fun checkExternalSerializer(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
||||||
val serializableKType = classSymbol.getSerializerForClass(session) ?: return
|
val serializableKType = classSymbol.getSerializerForClass(session) ?: return
|
||||||
val serializableClassSymbol = serializableKType.toRegularClassSymbol(session) ?: return
|
val serializableClassSymbol = serializableKType.toRegularClassSymbol(session) ?: return
|
||||||
@@ -128,7 +129,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkInheritedAnnotations(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
private fun checkInheritedAnnotations(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
||||||
fun annotationsFilter(annotations: List<FirAnnotation>): List<Pair<ClassId, FirAnnotation>> {
|
fun annotationsFilter(annotations: List<FirAnnotation>): List<Pair<ClassId, FirAnnotation>> {
|
||||||
return annotations
|
return annotations
|
||||||
@@ -158,7 +158,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun FirAnnotation.hasSameArguments(other: FirAnnotation): Boolean {
|
private fun FirAnnotation.hasSameArguments(other: FirAnnotation): Boolean {
|
||||||
val m1 = argumentMapping.mapping
|
val m1 = argumentMapping.mapping
|
||||||
val m2 = other.argumentMapping.mapping
|
val m2 = other.argumentMapping.mapping
|
||||||
@@ -171,7 +170,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun FirExpression.isEqualTo(other: FirExpression): Boolean {
|
private fun FirExpression.isEqualTo(other: FirExpression): Boolean {
|
||||||
return when {
|
return when {
|
||||||
this is FirConstExpression<*> && other is FirConstExpression<*> -> kind == other.kind && value == other.value
|
this is FirConstExpression<*> && other is FirConstExpression<*> -> kind == other.kind && value == other.value
|
||||||
@@ -202,7 +200,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkVersions(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
private fun checkVersions(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
||||||
val currentVersions = session.versionReader.runtimeVersions ?: return
|
val currentVersions = session.versionReader.runtimeVersions ?: return
|
||||||
if (!currentVersions.implementationVersionMatchSupported()) {
|
if (!currentVersions.implementationVersionMatchSupported()) {
|
||||||
@@ -226,7 +223,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkCorrectTransientAnnotationIsUsed(
|
private fun checkCorrectTransientAnnotationIsUsed(
|
||||||
classSymbol: FirClassSymbol<*>,
|
classSymbol: FirClassSymbol<*>,
|
||||||
properties: List<FirSerializableProperty>,
|
properties: List<FirSerializableProperty>,
|
||||||
@@ -246,7 +242,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun canBeSerializedInternally(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter): Boolean {
|
private fun canBeSerializedInternally(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter): Boolean {
|
||||||
// if enum has meta or SerialInfo annotation on a class or entries and used plugin-generated serializer
|
// if enum has meta or SerialInfo annotation on a class or entries and used plugin-generated serializer
|
||||||
if (session.dependencySerializationInfoProvider.useGeneratedEnumSerializer && classSymbol.isSerializableEnumWithMissingSerializer) {
|
if (session.dependencySerializationInfoProvider.useGeneratedEnumSerializer && classSymbol.isSerializableEnumWithMissingSerializer) {
|
||||||
@@ -363,7 +358,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
|
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkClassWithCustomSerializer(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
private fun checkClassWithCustomSerializer(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
||||||
val serializerType = classSymbol.getSerializableWith(session)?.fullyExpandedType(session) ?: return
|
val serializerType = classSymbol.getSerializableWith(session)?.fullyExpandedType(session) ?: return
|
||||||
checkCustomSerializerMatch(classSymbol, source = null, classSymbol.defaultType(), serializerType, reporter)
|
checkCustomSerializerMatch(classSymbol, source = null, classSymbol.defaultType(), serializerType, reporter)
|
||||||
@@ -371,7 +365,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private val FirClassSymbol<*>.isAnonymousObjectOrInsideIt: Boolean
|
private val FirClassSymbol<*>.isAnonymousObjectOrInsideIt: Boolean
|
||||||
get() {
|
get() {
|
||||||
if (this is FirAnonymousObjectSymbol) return true
|
if (this is FirAnonymousObjectSymbol) return true
|
||||||
@@ -379,7 +372,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkEnum(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
private fun checkEnum(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
||||||
if (!classSymbol.isEnumClass) return
|
if (!classSymbol.isEnumClass) return
|
||||||
val entryBySerialName = mutableMapOf<String, FirEnumEntrySymbol>()
|
val entryBySerialName = mutableMapOf<String, FirEnumEntrySymbol>()
|
||||||
@@ -403,7 +395,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
|
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun buildSerializableProperties(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter): FirSerializableProperties? {
|
private fun buildSerializableProperties(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter): FirSerializableProperties? {
|
||||||
with(session) {
|
with(session) {
|
||||||
if (!classSymbol.hasSerializableOrMetaAnnotation) return null
|
if (!classSymbol.hasSerializableOrMetaAnnotation) return null
|
||||||
@@ -431,7 +422,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkTransients(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
private fun checkTransients(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
|
||||||
for (propertySymbol in classSymbol.declarationSymbols.filterIsInstance<FirPropertySymbol>()) {
|
for (propertySymbol in classSymbol.declarationSymbols.filterIsInstance<FirPropertySymbol>()) {
|
||||||
val isInitialized = propertySymbol.isLateInit || declarationHasInitializer(propertySymbol)
|
val isInitialized = propertySymbol.isLateInit || declarationHasInitializer(propertySymbol)
|
||||||
@@ -455,7 +445,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun analyzePropertiesSerializers(
|
private fun analyzePropertiesSerializers(
|
||||||
classSymbol: FirClassSymbol<*>,
|
classSymbol: FirClassSymbol<*>,
|
||||||
properties: List<FirSerializableProperty>,
|
properties: List<FirSerializableProperty>,
|
||||||
@@ -506,7 +495,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkTypeArguments(type: ConeKotlinType, source: KtSourceElement?, reporter: DiagnosticReporter) {
|
private fun checkTypeArguments(type: ConeKotlinType, source: KtSourceElement?, reporter: DiagnosticReporter) {
|
||||||
for (typeArgument in type.typeArguments) {
|
for (typeArgument in type.typeArguments) {
|
||||||
checkType(
|
checkType(
|
||||||
@@ -518,18 +506,15 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun canSupportInlineClasses(): Boolean {
|
private fun canSupportInlineClasses(): Boolean {
|
||||||
return session.versionReader.canSupportInlineClasses
|
return session.versionReader.canSupportInlineClasses
|
||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private val ConeKotlinType.isUnsupportedInlineType: Boolean
|
private val ConeKotlinType.isUnsupportedInlineType: Boolean
|
||||||
get() = isSingleFieldValueClass(session) && !isPrimitiveOrNullablePrimitive
|
get() = isSingleFieldValueClass(session) && !isPrimitiveOrNullablePrimitive
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkType(type: ConeKotlinType, source: KtSourceElement?, reporter: DiagnosticReporter) {
|
private fun checkType(type: ConeKotlinType, source: KtSourceElement?, reporter: DiagnosticReporter) {
|
||||||
if (type.lowerBoundIfFlexible().isTypeParameter) return // type parameters always have serializer stored in class' field
|
if (type.lowerBoundIfFlexible().isTypeParameter) return // type parameters always have serializer stored in class' field
|
||||||
if (type.isUnsupportedInlineType && !canSupportInlineClasses()) {
|
if (type.isUnsupportedInlineType && !canSupportInlineClasses()) {
|
||||||
@@ -559,7 +544,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkCustomSerializerMatch(
|
private fun checkCustomSerializerMatch(
|
||||||
containingClassSymbol: FirClassSymbol<*>,
|
containingClassSymbol: FirClassSymbol<*>,
|
||||||
source: KtSourceElement?,
|
source: KtSourceElement?,
|
||||||
@@ -583,7 +567,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkCustomSerializerIsNotLocal(
|
private fun checkCustomSerializerIsNotLocal(
|
||||||
source: KtSourceElement?,
|
source: KtSourceElement?,
|
||||||
classSymbol: FirClassSymbol<*>,
|
classSymbol: FirClassSymbol<*>,
|
||||||
@@ -601,7 +584,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
private fun checkSerializerNullability(
|
private fun checkSerializerNullability(
|
||||||
classType: ConeKotlinType,
|
classType: ConeKotlinType,
|
||||||
serializerType: ConeKotlinType,
|
serializerType: ConeKotlinType,
|
||||||
|
|||||||
-12
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.*
|
import org.jetbrains.kotlinx.serialization.compiler.fir.*
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.getSerializableWith
|
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.fir.services.dependencySerializationInfoProvider
|
import org.jetbrains.kotlinx.serialization.compiler.fir.services.dependencySerializationInfoProvider
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames
|
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationAnnotations
|
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationAnnotations
|
||||||
@@ -41,7 +40,6 @@ import org.jetbrains.kotlinx.serialization.compiler.resolve.SpecialBuiltins
|
|||||||
// ---------------------- search utils ----------------------
|
// ---------------------- search utils ----------------------
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>?.classSerializer: FirClassSymbol<*>?
|
internal val FirClassSymbol<*>?.classSerializer: FirClassSymbol<*>?
|
||||||
get() {
|
get() {
|
||||||
if (this == null) return null
|
if (this == null) return null
|
||||||
@@ -61,7 +59,6 @@ internal val FirClassSymbol<*>?.classSerializer: FirClassSymbol<*>?
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
val FirClassSymbol<*>.polymorphicSerializerIfApplicableAutomatically: FirClassSymbol<*>?
|
val FirClassSymbol<*>.polymorphicSerializerIfApplicableAutomatically: FirClassSymbol<*>?
|
||||||
get() {
|
get() {
|
||||||
val serializerName = when {
|
val serializerName = when {
|
||||||
@@ -84,27 +81,23 @@ val FirClassSymbol<*>.polymorphicSerializerIfApplicableAutomatically: FirClassSy
|
|||||||
// ---------------------- annotation utils ----------------------
|
// ---------------------- annotation utils ----------------------
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirAnnotation.annotationClassSymbol: FirRegularClassSymbol?
|
internal val FirAnnotation.annotationClassSymbol: FirRegularClassSymbol?
|
||||||
get() = annotationTypeRef.coneType
|
get() = annotationTypeRef.coneType
|
||||||
.fullyExpandedType(session)
|
.fullyExpandedType(session)
|
||||||
.toRegularClassSymbol(session)
|
.toRegularClassSymbol(session)
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirAnnotation.isMetaSerializableAnnotation: Boolean
|
internal val FirAnnotation.isMetaSerializableAnnotation: Boolean
|
||||||
get() = annotationClassSymbol?.hasAnnotation(SerializationAnnotations.metaSerializableAnnotationClassId, session) ?: false
|
get() = annotationClassSymbol?.hasAnnotation(SerializationAnnotations.metaSerializableAnnotationClassId, session) ?: false
|
||||||
|
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal fun FirClassSymbol<*>.metaSerializableAnnotation(needArguments: Boolean): FirAnnotation? {
|
internal fun FirClassSymbol<*>.metaSerializableAnnotation(needArguments: Boolean): FirAnnotation? {
|
||||||
val annotations = if (needArguments) resolvedAnnotationsWithClassIds else resolvedAnnotationsWithArguments
|
val annotations = if (needArguments) resolvedAnnotationsWithClassIds else resolvedAnnotationsWithArguments
|
||||||
return annotations.firstOrNull { it.isMetaSerializableAnnotation }
|
return annotations.firstOrNull { it.isMetaSerializableAnnotation }
|
||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.serializableOrMetaAnnotationSource: KtSourceElement?
|
internal val FirClassSymbol<*>.serializableOrMetaAnnotationSource: KtSourceElement?
|
||||||
get() {
|
get() {
|
||||||
serializableAnnotation(needArguments = false, session)?.source?.let { return it }
|
serializableAnnotation(needArguments = false, session)?.source?.let { return it }
|
||||||
@@ -113,7 +106,6 @@ internal val FirClassSymbol<*>.serializableOrMetaAnnotationSource: KtSourceEleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirBasedSymbol<*>.hasAnySerialAnnotation: Boolean
|
internal val FirBasedSymbol<*>.hasAnySerialAnnotation: Boolean
|
||||||
get() = getSerialNameValue(session) != null || resolvedAnnotationsWithClassIds.any {
|
get() = getSerialNameValue(session) != null || resolvedAnnotationsWithClassIds.any {
|
||||||
with(session) { it.annotationClassSymbol?.isSerialInfoAnnotation == true }
|
with(session) { it.annotationClassSymbol?.isSerialInfoAnnotation == true }
|
||||||
@@ -134,7 +126,6 @@ fun FirClassSymbol<*>.getSuperClassOrAny(session: FirSession): FirRegularClassSy
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.isSerializableEnumWithMissingSerializer: Boolean
|
internal val FirClassSymbol<*>.isSerializableEnumWithMissingSerializer: Boolean
|
||||||
get() {
|
get() {
|
||||||
if (!isEnumClass) return false
|
if (!isEnumClass) return false
|
||||||
@@ -144,7 +135,6 @@ internal val FirClassSymbol<*>.isSerializableEnumWithMissingSerializer: Boolean
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(FirSession)
|
context(FirSession)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val FirClassSymbol<*>.serializableAnnotationIsUseless: Boolean
|
internal val FirClassSymbol<*>.serializableAnnotationIsUseless: Boolean
|
||||||
get() = !classKind.isEnumClass &&
|
get() = !classKind.isEnumClass &&
|
||||||
hasSerializableOrMetaAnnotationWithoutArgs &&
|
hasSerializableOrMetaAnnotationWithoutArgs &&
|
||||||
@@ -155,13 +145,11 @@ internal val FirClassSymbol<*>.serializableAnnotationIsUseless: Boolean
|
|||||||
// ---------------------- type utils ----------------------
|
// ---------------------- type utils ----------------------
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val ConeKotlinType.serializableWith: ConeKotlinType?
|
internal val ConeKotlinType.serializableWith: ConeKotlinType?
|
||||||
get() = customAnnotations.getSerializableWith(session) ?: toRegularClassSymbol(session)?.getSerializableWith(session)
|
get() = customAnnotations.getSerializableWith(session) ?: toRegularClassSymbol(session)?.getSerializableWith(session)
|
||||||
|
|
||||||
|
|
||||||
context(CheckerContext)
|
context(CheckerContext)
|
||||||
@Suppress("IncorrectFormatting") // KTIJ-22227
|
|
||||||
internal val ConeKotlinType.overriddenSerializer: ConeKotlinType?
|
internal val ConeKotlinType.overriddenSerializer: ConeKotlinType?
|
||||||
get() = toRegularClassSymbol(session)?.getSerializableWith(session)
|
get() = toRegularClassSymbol(session)?.getSerializableWith(session)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user