[FIR] Report when typealias expansion contains deprecated type

#KT-57843 Fixed
This commit is contained in:
Kirill Rakhman
2023-04-06 11:56:10 +02:00
committed by Space Team
parent 206fad4256
commit 1f29490118
13 changed files with 124 additions and 42 deletions
@@ -313,6 +313,24 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.TYPEALIAS_EXPANSION_DEPRECATION_ERROR) { firDiagnostic ->
TypealiasExpansionDeprecationErrorImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
firSymbolBuilder.buildSymbol(firDiagnostic.b),
firDiagnostic.c,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.TYPEALIAS_EXPANSION_DEPRECATION) { firDiagnostic ->
TypealiasExpansionDeprecationImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
firSymbolBuilder.buildSymbol(firDiagnostic.b),
firDiagnostic.c,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.API_NOT_AVAILABLE) { firDiagnostic ->
ApiNotAvailableImpl(
firDiagnostic.a,
@@ -259,6 +259,20 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val message: String
}
abstract class TypealiasExpansionDeprecationError : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = TypealiasExpansionDeprecationError::class
abstract val alias: KtSymbol
abstract val reference: KtSymbol
abstract val message: String
}
abstract class TypealiasExpansionDeprecation : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = TypealiasExpansionDeprecation::class
abstract val alias: KtSymbol
abstract val reference: KtSymbol
abstract val message: String
}
abstract class ApiNotAvailable : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = ApiNotAvailable::class
abstract val sinceKotlinVersion: ApiVersion
@@ -297,6 +297,22 @@ internal class DeprecationImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.Deprecation(), KtAbstractFirDiagnostic<PsiElement>
internal class TypealiasExpansionDeprecationErrorImpl(
override val alias: KtSymbol,
override val reference: KtSymbol,
override val message: String,
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.TypealiasExpansionDeprecationError(), KtAbstractFirDiagnostic<PsiElement>
internal class TypealiasExpansionDeprecationImpl(
override val alias: KtSymbol,
override val reference: KtSymbol,
override val message: String,
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.TypealiasExpansionDeprecation(), KtAbstractFirDiagnostic<PsiElement>
internal class ApiNotAvailableImpl(
override val sinceKotlinVersion: ApiVersion,
override val currentVersion: ApiVersion,