[FIR] Report warning on non-deprecated overrides of deprecated members
^KT-47902
This commit is contained in:
+2
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget
|
||||
import org.jetbrains.kotlin.resolve.deprecation.Deprecation
|
||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import kotlin.reflect.KClass
|
||||
@@ -336,6 +337,7 @@ private object FirToKtConversionCreator {
|
||||
FqName::class,
|
||||
FirModuleData::class,
|
||||
ExpectActualCompatibility.Incompatible::class,
|
||||
Deprecation::class,
|
||||
)
|
||||
|
||||
private val KType.kClass: KClass<*>
|
||||
|
||||
+8
@@ -761,6 +761,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.OVERRIDE_DEPRECATION) { firDiagnostic ->
|
||||
OverrideDeprecationImpl(
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir),
|
||||
firDiagnostic.b,
|
||||
firDiagnostic as FirPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.ANNOTATION_ON_SUPERCLASS.errorFactory) { firDiagnostic ->
|
||||
AnnotationOnSuperclassErrorImpl(
|
||||
firDiagnostic as FirPsiDiagnostic,
|
||||
|
||||
+7
@@ -70,6 +70,7 @@ import org.jetbrains.kotlin.psi.KtWhenCondition
|
||||
import org.jetbrains.kotlin.psi.KtWhenEntry
|
||||
import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget
|
||||
import org.jetbrains.kotlin.resolve.deprecation.Deprecation
|
||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility.Incompatible
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
@@ -548,6 +549,12 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
override val diagnosticClass get() = DeprecatedSinceKotlinOutsideKotlinSubpackage::class
|
||||
}
|
||||
|
||||
abstract class OverrideDeprecation : KtFirDiagnostic<KtNamedDeclaration>() {
|
||||
override val diagnosticClass get() = OverrideDeprecation::class
|
||||
abstract val overridenSymbol: KtSymbol
|
||||
abstract val deprecationInfo: Deprecation
|
||||
}
|
||||
|
||||
abstract class AnnotationOnSuperclassError : KtFirDiagnostic<KtAnnotationEntry>() {
|
||||
override val diagnosticClass get() = AnnotationOnSuperclassError::class
|
||||
}
|
||||
|
||||
+10
@@ -72,6 +72,7 @@ import org.jetbrains.kotlin.psi.KtWhenCondition
|
||||
import org.jetbrains.kotlin.psi.KtWhenEntry
|
||||
import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget
|
||||
import org.jetbrains.kotlin.resolve.deprecation.Deprecation
|
||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility.Incompatible
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
@@ -876,6 +877,15 @@ internal class DeprecatedSinceKotlinOutsideKotlinSubpackageImpl(
|
||||
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class OverrideDeprecationImpl(
|
||||
override val overridenSymbol: KtSymbol,
|
||||
override val deprecationInfo: Deprecation,
|
||||
firDiagnostic: FirPsiDiagnostic,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.OverrideDeprecation(), KtAbstractFirDiagnostic<KtNamedDeclaration> {
|
||||
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class AnnotationOnSuperclassErrorImpl(
|
||||
firDiagnostic: FirPsiDiagnostic,
|
||||
override val token: ValidityToken,
|
||||
|
||||
Reference in New Issue
Block a user