[Parcelize] Fix subclass check of deprecated Parceler interface

^KT-59949 Fixed
^KT-60090 Fixed
This commit is contained in:
Brian Norman
2023-12-12 13:58:54 -06:00
committed by Space Team
parent 84388d5f04
commit 645970fa7a
2 changed files with 12 additions and 13 deletions
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirClassChecker
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.resolve.isSubclassOf
import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.types.*
@@ -95,16 +96,14 @@ object FirParcelizeClassChecker : FirClassChecker() {
}
private fun checkParcelerClass(klass: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
if (klass !is FirRegularClass || klass.isCompanion) return
for (superTypeRef in klass.superTypeRefs) {
if (superTypeRef.coneType.classId == OLD_PARCELER_ID) {
val strategy = if (klass.name == SpecialNames.NO_NAME_PROVIDED) {
SourceElementPositioningStrategies.OBJECT_KEYWORD
} else {
SourceElementPositioningStrategies.NAME_IDENTIFIER
}
reporter.reportOn(klass.source, KtErrorsParcelize.DEPRECATED_PARCELER, context, positioningStrategy = strategy)
if (klass !is FirRegularClass || !klass.isCompanion) return
if (klass.isSubclassOf(OLD_PARCELER_ID.toLookupTag(), context.session, isStrict = true)) {
val strategy = if (klass.name == SpecialNames.NO_NAME_PROVIDED) {
SourceElementPositioningStrategies.OBJECT_KEYWORD
} else {
SourceElementPositioningStrategies.NAME_IDENTIFIER
}
reporter.reportOn(klass.source, KtErrorsParcelize.DEPRECATED_PARCELER, context, positioningStrategy = strategy)
}
}
}