[FIR] Remove or replace whole expressions in FIR diagnostic messages
FIR expressions rendered by FirRenderer don't look very nice in error messages anyway, and additionally, they can become arbitrarily large, so we shouldn't use them in messages. #KT-59449 Fixed
This commit is contained in:
committed by
Space Team
parent
0f0f0d604f
commit
6318da0f02
+10
-10
@@ -3586,8 +3586,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
}
|
||||
add(FirErrors.SENSELESS_COMPARISON) { firDiagnostic ->
|
||||
SenselessComparisonImpl(
|
||||
firDiagnostic.a.source!!.psi as KtExpression,
|
||||
firDiagnostic.b,
|
||||
firDiagnostic.a,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
@@ -3621,18 +3620,20 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
}
|
||||
add(FirErrors.UNSAFE_INFIX_CALL) { firDiagnostic ->
|
||||
UnsafeInfixCallImpl(
|
||||
firDiagnostic.a.source!!.psi as KtExpression,
|
||||
firDiagnostic.b,
|
||||
firDiagnostic.c.source!!.psi as KtExpression,
|
||||
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
|
||||
firDiagnostic.b.source!!.psi as KtExpression,
|
||||
firDiagnostic.c,
|
||||
firDiagnostic.d.source!!.psi as KtExpression,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.UNSAFE_OPERATOR_CALL) { firDiagnostic ->
|
||||
UnsafeOperatorCallImpl(
|
||||
firDiagnostic.a.source!!.psi as KtExpression,
|
||||
firDiagnostic.b,
|
||||
firDiagnostic.c.source!!.psi as KtExpression,
|
||||
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
|
||||
firDiagnostic.b.source!!.psi as KtExpression,
|
||||
firDiagnostic.c,
|
||||
firDiagnostic.d.source!!.psi as KtExpression,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
@@ -4315,8 +4316,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
}
|
||||
add(FirErrors.INVALID_DEFAULT_FUNCTIONAL_PARAMETER_FOR_INLINE) { firDiagnostic ->
|
||||
InvalidDefaultFunctionalParameterForInlineImpl(
|
||||
firDiagnostic.a.source!!.psi as KtExpression,
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.b),
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.a),
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
|
||||
+2
-2
@@ -2506,7 +2506,6 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
interface SenselessComparison : KtFirDiagnostic<KtExpression> {
|
||||
override val diagnosticClass get() = SenselessComparison::class
|
||||
val expression: KtExpression
|
||||
val compareResult: Boolean
|
||||
}
|
||||
|
||||
@@ -2531,6 +2530,7 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
interface UnsafeInfixCall : KtFirDiagnostic<KtExpression> {
|
||||
override val diagnosticClass get() = UnsafeInfixCall::class
|
||||
val receiverType: KtType
|
||||
val receiverExpression: KtExpression
|
||||
val operator: String
|
||||
val argumentExpression: KtExpression
|
||||
@@ -2538,6 +2538,7 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
interface UnsafeOperatorCall : KtFirDiagnostic<KtExpression> {
|
||||
override val diagnosticClass get() = UnsafeOperatorCall::class
|
||||
val receiverType: KtType
|
||||
val receiverExpression: KtExpression
|
||||
val operator: String
|
||||
val argumentExpression: KtExpression
|
||||
@@ -3011,7 +3012,6 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
interface InvalidDefaultFunctionalParameterForInline : KtFirDiagnostic<KtElement> {
|
||||
override val diagnosticClass get() = InvalidDefaultFunctionalParameterForInline::class
|
||||
val defaultValue: KtExpression
|
||||
val parameter: KtSymbol
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -3018,7 +3018,6 @@ internal class UnreachableCodeImpl(
|
||||
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.UnreachableCode
|
||||
|
||||
internal class SenselessComparisonImpl(
|
||||
override val expression: KtExpression,
|
||||
override val compareResult: Boolean,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
@@ -3048,6 +3047,7 @@ internal class UnsafeImplicitInvokeCallImpl(
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.UnsafeImplicitInvokeCall
|
||||
|
||||
internal class UnsafeInfixCallImpl(
|
||||
override val receiverType: KtType,
|
||||
override val receiverExpression: KtExpression,
|
||||
override val operator: String,
|
||||
override val argumentExpression: KtExpression,
|
||||
@@ -3056,6 +3056,7 @@ internal class UnsafeInfixCallImpl(
|
||||
) : KtAbstractFirDiagnostic<KtExpression>(firDiagnostic, token), KtFirDiagnostic.UnsafeInfixCall
|
||||
|
||||
internal class UnsafeOperatorCallImpl(
|
||||
override val receiverType: KtType,
|
||||
override val receiverExpression: KtExpression,
|
||||
override val operator: String,
|
||||
override val argumentExpression: KtExpression,
|
||||
@@ -3629,7 +3630,6 @@ internal class NonInternalPublishedApiImpl(
|
||||
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.NonInternalPublishedApi
|
||||
|
||||
internal class InvalidDefaultFunctionalParameterForInlineImpl(
|
||||
override val defaultValue: KtExpression,
|
||||
override val parameter: KtSymbol,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
|
||||
+6
@@ -29742,6 +29742,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/senselessComparison"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true, "multiplatform");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("complexExpression.kt")
|
||||
public void testComplexExpression() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/senselessComparison/complexExpression.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noExplicitType.kt")
|
||||
public void testNoExplicitType() throws Exception {
|
||||
|
||||
+6
@@ -29742,6 +29742,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/senselessComparison"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true, "multiplatform");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("complexExpression.kt")
|
||||
public void testComplexExpression() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/senselessComparison/complexExpression.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noExplicitType.kt")
|
||||
public void testNoExplicitType() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user