[K2 Serialization] Remove obsolete formatting suppression

This commit is contained in:
Dmitriy Novozhilov
2023-03-28 14:14:42 +03:00
committed by Space Team
parent fb97f4db87
commit 5ccf1eddab
5 changed files with 7 additions and 56 deletions
@@ -309,7 +309,6 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene
get() = session.predicateBasedProvider.matches(FirSerializationPredicates.serializerFor, this)
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
private val FirClassSymbol<*>.companionNeedsSerializerFactory: Boolean
get() {
if (!(moduleData.platform.isNative() || moduleData.platform.isJs())) return false
@@ -36,7 +36,6 @@ class SerializationFirSupertypesExtension(session: FirSession) : FirSupertypeGen
}
context(TypeResolveServiceContainer)
@Suppress("IncorrectFormatting") // KTIJ-22227
override fun computeAdditionalSupertypes(
classLikeDeclaration: FirClassLikeDeclaration,
resolvedSupertypes: List<FirResolvedTypeRef>
@@ -59,7 +58,6 @@ class SerializationFirSupertypesExtension(session: FirSession) : FirSupertypeGen
// Function helps to resolve class call from annotation argument to `ConeKotlinType`
context(TypeResolveServiceContainer)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun resolveConeTypeFromArgument(getClassCall: FirGetClassCall): ConeKotlinType {
val typeToResolve = buildUserTypeFromQualifierParts(isMarkedNullable = false) {
fun visitQualifiers(expression: FirExpression) {
@@ -8,29 +8,21 @@ package org.jetbrains.kotlinx.serialization.compiler.fir
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.fir.FirAnnotationContainer
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.utils.*
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.extensions.FirExtension
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
import org.jetbrains.kotlin.fir.moduleData
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.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.ConeSubstitutor
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
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.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.*
@@ -79,7 +71,6 @@ fun FirBasedSymbol<*>.getSerialTransientAnnotation(session: FirSession): FirAnno
getAnnotationByClassId(SerializationAnnotations.serialTransientClassId, session)
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
val FirClassSymbol<*>.hasSerializableAnnotation: Boolean
get() = serializableAnnotation(needArguments = false, this@FirSession) != null
@@ -128,17 +119,14 @@ internal fun FirClassLikeDeclaration.getSerializerFor(session: FirSession): FirG
?.getGetKClassArgument(AnnotationParameterNames.FOR_CLASS)
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.isInternallySerializableObject: Boolean
get() = classKind.isObject && hasSerializableOrMetaAnnotationWithoutArgs
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.isSerializableObject: Boolean
get() = classKind.isObject && hasSerializableOrMetaAnnotation
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.isSealedSerializableInterface: Boolean
get() = classKind.isInterface && rawStatus.modality == Modality.SEALED && hasSerializableOrMetaAnnotation
@@ -151,7 +139,6 @@ val FirClassSymbol<*>.hasMetaSerializableAnnotation: Boolean
get() = predicateBasedProvider.matches(FirSerializationPredicates.hasMetaAnnotation, this)
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.shouldHaveGeneratedMethodsInCompanion: Boolean
get() = isSerializableObject
|| isSerializableEnum
@@ -159,7 +146,6 @@ internal val FirClassSymbol<*>.shouldHaveGeneratedMethodsInCompanion: Boolean
|| isSealedSerializableInterface
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.isInternalSerializable: Boolean
get() {
if (!classKind.isClass) return false
@@ -172,7 +158,6 @@ val FirClassSymbol<*>.hasSerializableOrMetaAnnotationWithoutArgs: Boolean
(!hasSerializableAnnotation && hasMetaSerializableAnnotation)
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.isAbstractOrSealedSerializableClass: Boolean
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.
*/
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.isSerializableEnum: Boolean
get() = classKind.isEnumClass && hasSerializableOrMetaAnnotation
@@ -8,7 +8,9 @@ package org.jetbrains.kotlinx.serialization.compiler.fir.checkers
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.config.KotlinCompilerVersion
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.context.CheckerContext
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.symbols.impl.*
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.types.AbstractTypeChecker
import org.jetbrains.kotlinx.serialization.compiler.diagnostic.RuntimeVersions
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.getSerializerForClass
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.serializablePropertiesProvider
@@ -84,7 +86,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkExternalSerializer(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
val serializableKType = classSymbol.getSerializerForClass(session) ?: return
val serializableClassSymbol = serializableKType.toRegularClassSymbol(session) ?: return
@@ -128,7 +129,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkInheritedAnnotations(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
fun annotationsFilter(annotations: List<FirAnnotation>): List<Pair<ClassId, FirAnnotation>> {
return annotations
@@ -158,7 +158,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun FirAnnotation.hasSameArguments(other: FirAnnotation): Boolean {
val m1 = argumentMapping.mapping
val m2 = other.argumentMapping.mapping
@@ -171,7 +170,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun FirExpression.isEqualTo(other: FirExpression): Boolean {
return when {
this is FirConstExpression<*> && other is FirConstExpression<*> -> kind == other.kind && value == other.value
@@ -202,7 +200,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkVersions(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
val currentVersions = session.versionReader.runtimeVersions ?: return
if (!currentVersions.implementationVersionMatchSupported()) {
@@ -226,7 +223,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkCorrectTransientAnnotationIsUsed(
classSymbol: FirClassSymbol<*>,
properties: List<FirSerializableProperty>,
@@ -246,7 +242,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
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 (session.dependencySerializationInfoProvider.useGeneratedEnumSerializer && classSymbol.isSerializableEnumWithMissingSerializer) {
@@ -363,7 +358,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkClassWithCustomSerializer(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
val serializerType = classSymbol.getSerializableWith(session)?.fullyExpandedType(session) ?: return
checkCustomSerializerMatch(classSymbol, source = null, classSymbol.defaultType(), serializerType, reporter)
@@ -371,7 +365,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private val FirClassSymbol<*>.isAnonymousObjectOrInsideIt: Boolean
get() {
if (this is FirAnonymousObjectSymbol) return true
@@ -379,7 +372,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkEnum(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
if (!classSymbol.isEnumClass) return
val entryBySerialName = mutableMapOf<String, FirEnumEntrySymbol>()
@@ -403,7 +395,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun buildSerializableProperties(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter): FirSerializableProperties? {
with(session) {
if (!classSymbol.hasSerializableOrMetaAnnotation) return null
@@ -431,7 +422,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkTransients(classSymbol: FirClassSymbol<*>, reporter: DiagnosticReporter) {
for (propertySymbol in classSymbol.declarationSymbols.filterIsInstance<FirPropertySymbol>()) {
val isInitialized = propertySymbol.isLateInit || declarationHasInitializer(propertySymbol)
@@ -455,7 +445,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun analyzePropertiesSerializers(
classSymbol: FirClassSymbol<*>,
properties: List<FirSerializableProperty>,
@@ -506,7 +495,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkTypeArguments(type: ConeKotlinType, source: KtSourceElement?, reporter: DiagnosticReporter) {
for (typeArgument in type.typeArguments) {
checkType(
@@ -518,18 +506,15 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun canSupportInlineClasses(): Boolean {
return session.versionReader.canSupportInlineClasses
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private val ConeKotlinType.isUnsupportedInlineType: Boolean
get() = isSingleFieldValueClass(session) && !isPrimitiveOrNullablePrimitive
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
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.isUnsupportedInlineType && !canSupportInlineClasses()) {
@@ -559,7 +544,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkCustomSerializerMatch(
containingClassSymbol: FirClassSymbol<*>,
source: KtSourceElement?,
@@ -583,7 +567,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkCustomSerializerIsNotLocal(
source: KtSourceElement?,
classSymbol: FirClassSymbol<*>,
@@ -601,7 +584,6 @@ object FirSerializationPluginClassChecker : FirClassChecker() {
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
private fun checkSerializerNullability(
classType: ConeKotlinType,
serializerType: ConeKotlinType,
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds
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.resolve.SerialEntityNames
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationAnnotations
@@ -41,7 +40,6 @@ import org.jetbrains.kotlinx.serialization.compiler.resolve.SpecialBuiltins
// ---------------------- search utils ----------------------
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>?.classSerializer: FirClassSymbol<*>?
get() {
if (this == null) return null
@@ -61,7 +59,6 @@ internal val FirClassSymbol<*>?.classSerializer: FirClassSymbol<*>?
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
val FirClassSymbol<*>.polymorphicSerializerIfApplicableAutomatically: FirClassSymbol<*>?
get() {
val serializerName = when {
@@ -84,27 +81,23 @@ val FirClassSymbol<*>.polymorphicSerializerIfApplicableAutomatically: FirClassSy
// ---------------------- annotation utils ----------------------
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirAnnotation.annotationClassSymbol: FirRegularClassSymbol?
get() = annotationTypeRef.coneType
.fullyExpandedType(session)
.toRegularClassSymbol(session)
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirAnnotation.isMetaSerializableAnnotation: Boolean
get() = annotationClassSymbol?.hasAnnotation(SerializationAnnotations.metaSerializableAnnotationClassId, session) ?: false
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal fun FirClassSymbol<*>.metaSerializableAnnotation(needArguments: Boolean): FirAnnotation? {
val annotations = if (needArguments) resolvedAnnotationsWithClassIds else resolvedAnnotationsWithArguments
return annotations.firstOrNull { it.isMetaSerializableAnnotation }
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.serializableOrMetaAnnotationSource: KtSourceElement?
get() {
serializableAnnotation(needArguments = false, session)?.source?.let { return it }
@@ -113,7 +106,6 @@ internal val FirClassSymbol<*>.serializableOrMetaAnnotationSource: KtSourceEleme
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirBasedSymbol<*>.hasAnySerialAnnotation: Boolean
get() = getSerialNameValue(session) != null || resolvedAnnotationsWithClassIds.any {
with(session) { it.annotationClassSymbol?.isSerialInfoAnnotation == true }
@@ -134,7 +126,6 @@ fun FirClassSymbol<*>.getSuperClassOrAny(session: FirSession): FirRegularClassSy
}
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.isSerializableEnumWithMissingSerializer: Boolean
get() {
if (!isEnumClass) return false
@@ -144,7 +135,6 @@ internal val FirClassSymbol<*>.isSerializableEnumWithMissingSerializer: Boolean
}
context(FirSession)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val FirClassSymbol<*>.serializableAnnotationIsUseless: Boolean
get() = !classKind.isEnumClass &&
hasSerializableOrMetaAnnotationWithoutArgs &&
@@ -155,13 +145,11 @@ internal val FirClassSymbol<*>.serializableAnnotationIsUseless: Boolean
// ---------------------- type utils ----------------------
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val ConeKotlinType.serializableWith: ConeKotlinType?
get() = customAnnotations.getSerializableWith(session) ?: toRegularClassSymbol(session)?.getSerializableWith(session)
context(CheckerContext)
@Suppress("IncorrectFormatting") // KTIJ-22227
internal val ConeKotlinType.overriddenSerializer: ConeKotlinType?
get() = toRegularClassSymbol(session)?.getSerializableWith(session)