FIR: add receiver expression to UNSAFE_CALL diagnostic and its variances
This commit is contained in:
committed by
Ilya Kirillov
parent
9106ae4f5f
commit
00ffa69cb3
+1
@@ -2035,6 +2035,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
add(FirErrors.UNSAFE_CALL) { firDiagnostic ->
|
||||
UnsafeCallImpl(
|
||||
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
|
||||
firDiagnostic.b?.source?.psi as? KtExpression,
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
|
||||
+5
-4
@@ -1430,6 +1430,7 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
abstract class UnsafeCall : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = UnsafeCall::class
|
||||
abstract val receiverType: KtType
|
||||
abstract val receiverExpression: KtExpression?
|
||||
}
|
||||
|
||||
abstract class UnsafeImplicitInvokeCall : KtFirDiagnostic<PsiElement>() {
|
||||
@@ -1439,16 +1440,16 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
abstract class UnsafeInfixCall : KtFirDiagnostic<KtExpression>() {
|
||||
override val diagnosticClass get() = UnsafeInfixCall::class
|
||||
abstract val lhs: KtExpression
|
||||
abstract val receiverExpression: KtExpression
|
||||
abstract val operator: String
|
||||
abstract val rhs: KtExpression
|
||||
abstract val argumentExpression: KtExpression
|
||||
}
|
||||
|
||||
abstract class UnsafeOperatorCall : KtFirDiagnostic<KtExpression>() {
|
||||
override val diagnosticClass get() = UnsafeOperatorCall::class
|
||||
abstract val lhs: KtExpression
|
||||
abstract val receiverExpression: KtExpression
|
||||
abstract val operator: String
|
||||
abstract val rhs: KtExpression
|
||||
abstract val argumentExpression: KtExpression
|
||||
}
|
||||
|
||||
abstract class IteratorOnNullable : KtFirDiagnostic<KtExpression>() {
|
||||
|
||||
+5
-4
@@ -2321,6 +2321,7 @@ internal class WrongImpliesConditionImpl(
|
||||
|
||||
internal class UnsafeCallImpl(
|
||||
override val receiverType: KtType,
|
||||
override val receiverExpression: KtExpression?,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.UnsafeCall(), KtAbstractFirDiagnostic<PsiElement> {
|
||||
@@ -2336,9 +2337,9 @@ internal class UnsafeImplicitInvokeCallImpl(
|
||||
}
|
||||
|
||||
internal class UnsafeInfixCallImpl(
|
||||
override val lhs: KtExpression,
|
||||
override val receiverExpression: KtExpression,
|
||||
override val operator: String,
|
||||
override val rhs: KtExpression,
|
||||
override val argumentExpression: KtExpression,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.UnsafeInfixCall(), KtAbstractFirDiagnostic<KtExpression> {
|
||||
@@ -2346,9 +2347,9 @@ internal class UnsafeInfixCallImpl(
|
||||
}
|
||||
|
||||
internal class UnsafeOperatorCallImpl(
|
||||
override val lhs: KtExpression,
|
||||
override val receiverExpression: KtExpression,
|
||||
override val operator: String,
|
||||
override val rhs: KtExpression,
|
||||
override val argumentExpression: KtExpression,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.UnsafeOperatorCall(), KtAbstractFirDiagnostic<KtExpression> {
|
||||
|
||||
Reference in New Issue
Block a user