FIR checker: report SETTER_PROJECTED_OUT

This commit is contained in:
Tianyu Geng
2021-06-17 21:36:07 +03:00
committed by TeamCityServer
parent c3a91efea3
commit cdfb2fb3d9
13 changed files with 77 additions and 48 deletions
@@ -2250,6 +2250,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.SETTER_PROJECTED_OUT) { firDiagnostic ->
SetterProjectedOutImpl(
firSymbolBuilder.variableLikeBuilder.buildVariableSymbol(firDiagnostic.a.fir),
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.WRONG_INVOCATION_KIND) { firDiagnostic ->
WrongInvocationKindImpl(
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir as FirDeclaration),
@@ -1585,6 +1585,11 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val property: KtVariableSymbol
}
abstract class SetterProjectedOut : KtFirDiagnostic<KtBinaryExpression>() {
override val diagnosticClass get() = SetterProjectedOut::class
abstract val property: KtVariableSymbol
}
abstract class WrongInvocationKind : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = WrongInvocationKind::class
abstract val declaration: KtSymbol
@@ -2564,6 +2564,14 @@ internal class CapturedMemberValInitializationImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class SetterProjectedOutImpl(
override val property: KtVariableSymbol,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.SetterProjectedOut(), KtAbstractFirDiagnostic<KtBinaryExpression> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class WrongInvocationKindImpl(
override val declaration: KtSymbol,
override val requiredRange: EventOccurrencesRange,