[FIR] Allow, but also warn, KMutableProperty with captured types

^KT-63589 Fixed
This commit is contained in:
Alejandro Serrano Mena
2023-12-13 12:22:26 +01:00
committed by Space Team
parent 80d9933543
commit b077293396
17 changed files with 200 additions and 24 deletions
@@ -2662,6 +2662,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.MUTABLE_PROPERTY_WITH_CAPTURED_TYPE) { firDiagnostic ->
MutablePropertyWithCapturedTypeImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.NOTHING_TO_OVERRIDE) { firDiagnostic ->
NothingToOverrideImpl(
firSymbolBuilder.callableBuilder.buildCallableSymbol(firDiagnostic.a),
@@ -1885,6 +1885,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = UnsupportedClassLiteralsWithEmptyLhs::class
}
interface MutablePropertyWithCapturedType : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = MutablePropertyWithCapturedType::class
}
interface NothingToOverride : KtFirDiagnostic<KtModifierListOwner> {
override val diagnosticClass get() = NothingToOverride::class
val declaration: KtCallableSymbol
@@ -2266,6 +2266,11 @@ internal class UnsupportedClassLiteralsWithEmptyLhsImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.UnsupportedClassLiteralsWithEmptyLhs
internal class MutablePropertyWithCapturedTypeImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.MutablePropertyWithCapturedType
internal class NothingToOverrideImpl(
override val declaration: KtCallableSymbol,
firDiagnostic: KtPsiDiagnostic,