[FIR] Implement VERSION_REQUIREMENT_DEPRECATION diagnostics

This commit is contained in:
Kirill Rakhman
2023-08-04 17:20:49 +02:00
committed by Space Team
parent 65ea9697ab
commit 09f895efe6
23 changed files with 285 additions and 55 deletions
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.lexer.KtKeywordToken
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -370,6 +371,7 @@ internal object FirToKtConversionCreator {
CallableId::class,
ClassKind::class,
FunctionTypeKind::class,
VersionRequirement.Version::class,
)
private val KType.kClass: KClass<*>
@@ -327,6 +327,26 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.VERSION_REQUIREMENT_DEPRECATION_ERROR) { firDiagnostic ->
VersionRequirementDeprecationErrorImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
firDiagnostic.b,
firDiagnostic.c,
firDiagnostic.d,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.VERSION_REQUIREMENT_DEPRECATION) { firDiagnostic ->
VersionRequirementDeprecationImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
firDiagnostic.b,
firDiagnostic.c,
firDiagnostic.d,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.TYPEALIAS_EXPANSION_DEPRECATION_ERROR) { firDiagnostic ->
TypealiasExpansionDeprecationErrorImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a),
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.lexer.KtKeywordToken
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement.Version
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -271,6 +272,22 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val message: String
}
interface VersionRequirementDeprecationError : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = VersionRequirementDeprecationError::class
val reference: KtSymbol
val version: Version
val currentVersion: String
val message: String
}
interface VersionRequirementDeprecation : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = VersionRequirementDeprecation::class
val reference: KtSymbol
val version: Version
val currentVersion: String
val message: String
}
interface TypealiasExpansionDeprecationError : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = TypealiasExpansionDeprecationError::class
val alias: KtSymbol
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.lexer.KtKeywordToken
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement.Version
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -311,6 +312,24 @@ internal class DeprecationImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.Deprecation
internal class VersionRequirementDeprecationErrorImpl(
override val reference: KtSymbol,
override val version: Version,
override val currentVersion: String,
override val message: String,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.VersionRequirementDeprecationError
internal class VersionRequirementDeprecationImpl(
override val reference: KtSymbol,
override val version: Version,
override val currentVersion: String,
override val message: String,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.VersionRequirementDeprecation
internal class TypealiasExpansionDeprecationErrorImpl(
override val alias: KtSymbol,
override val reference: KtSymbol,