FIR checker: warn useless elvis
This commit is contained in:
committed by
TeamCityServer
parent
b2005302dc
commit
24d792fb49
+13
@@ -1798,6 +1798,19 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.USELESS_ELVIS) { firDiagnostic ->
|
||||
UselessElvisImpl(
|
||||
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.USELESS_ELVIS_RIGHT_IS_NULL) { firDiagnostic ->
|
||||
UselessElvisRightIsNullImpl(
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.NO_ELSE_IN_WHEN) { firDiagnostic ->
|
||||
NoElseInWhenImpl(
|
||||
firDiagnostic.a.map { whenMissingCase ->
|
||||
|
||||
+9
@@ -1265,6 +1265,15 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
override val diagnosticClass get() = NotNullAssertionOnCallableReference::class
|
||||
}
|
||||
|
||||
abstract class UselessElvis : KtFirDiagnostic<KtBinaryExpression>() {
|
||||
override val diagnosticClass get() = UselessElvis::class
|
||||
abstract val receiverType: KtType
|
||||
}
|
||||
|
||||
abstract class UselessElvisRightIsNull : KtFirDiagnostic<KtBinaryExpression>() {
|
||||
override val diagnosticClass get() = UselessElvisRightIsNull::class
|
||||
}
|
||||
|
||||
abstract class NoElseInWhen : KtFirDiagnostic<KtWhenExpression>() {
|
||||
override val diagnosticClass get() = NoElseInWhen::class
|
||||
abstract val missingWhenCases: List<WhenMissingCase>
|
||||
|
||||
+15
@@ -2049,6 +2049,21 @@ internal class NotNullAssertionOnCallableReferenceImpl(
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class UselessElvisImpl(
|
||||
override val receiverType: KtType,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.UselessElvis(), KtAbstractFirDiagnostic<KtBinaryExpression> {
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class UselessElvisRightIsNullImpl(
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.UselessElvisRightIsNull(), KtAbstractFirDiagnostic<KtBinaryExpression> {
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class NoElseInWhenImpl(
|
||||
override val missingWhenCases: List<WhenMissingCase>,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
|
||||
Reference in New Issue
Block a user