From f98451e38169a833f60b87618db4602133e02cf2 Mon Sep 17 00:00:00 2001 From: Vladimir Sukharev Date: Fri, 20 Oct 2023 18:04:21 +0000 Subject: [PATCH] rrn/sukharev/kt59433-add-text-for-NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE Follow-up to https://jetbrains.team/p/kt/reviews/12502/timeline which was incomplete for https://youtrack.jetbrains.com/issue/KT-59433/K2-Missing-NESTEDCLASSACCESSEDVIAINSTANCEREFERENCE - Fix test DefaultMessagesTest by adding a text for new diagnostic. - Move diagnostic's definition into better place Merge-request: KT-MR-12680 Merged-by: Vladimir Sukharev --- .../fir/diagnostics/KtFirDataClassConverters.kt | 14 +++++++------- .../api/fir/diagnostics/KtFirDiagnostics.kt | 10 +++++----- .../api/fir/diagnostics/KtFirDiagnosticsImpl.kt | 12 ++++++------ .../generator/diagnostics/FirDiagnosticsList.kt | 6 +++--- .../kotlin/fir/analysis/diagnostics/FirErrors.kt | 2 +- .../diagnostics/FirNonSuppressibleErrorNames.kt | 2 +- .../diagnostics/FirErrorsDefaultMessages.kt | 2 ++ 7 files changed, 25 insertions(+), 23 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt index bc4ab5692f9..143b40a2cde 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -524,13 +524,6 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } - add(FirErrors.NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE) { firDiagnostic -> - NestedClassAccessedViaInstanceReferenceImpl( - firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a), - firDiagnostic as KtPsiDiagnostic, - token, - ) - } add(FirErrors.SUPER_IS_NOT_AN_EXPRESSION) { firDiagnostic -> SuperIsNotAnExpressionImpl( firDiagnostic as KtPsiDiagnostic, @@ -2024,6 +2017,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } + add(FirErrors.NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE) { firDiagnostic -> + NestedClassAccessedViaInstanceReferenceImpl( + firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(firDiagnostic.a), + firDiagnostic as KtPsiDiagnostic, + token, + ) + } add(FirErrors.OVERLOAD_RESOLUTION_AMBIGUITY) { firDiagnostic -> OverloadResolutionAmbiguityImpl( firDiagnostic.a.map { firBasedSymbol -> diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt index eb01e588aab..55f31571818 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt @@ -414,11 +414,6 @@ sealed interface KtFirDiagnostic : KtDiagnosticWithPsi { val suggestedFunction: String } - interface NestedClassAccessedViaInstanceReference : KtFirDiagnostic { - override val diagnosticClass get() = NestedClassAccessedViaInstanceReference::class - val symbol: KtClassLikeSymbol - } - interface SuperIsNotAnExpression : KtFirDiagnostic { override val diagnosticClass get() = SuperIsNotAnExpression::class } @@ -1452,6 +1447,11 @@ sealed interface KtFirDiagnostic : KtDiagnosticWithPsi { val message: String } + interface NestedClassAccessedViaInstanceReference : KtFirDiagnostic { + override val diagnosticClass get() = NestedClassAccessedViaInstanceReference::class + val symbol: KtClassLikeSymbol + } + interface OverloadResolutionAmbiguity : KtFirDiagnostic { override val diagnosticClass get() = OverloadResolutionAmbiguity::class val candidates: List diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index c62183ed798..ccd7c7e88db 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -480,12 +480,6 @@ internal class DeprecatedBinaryModImpl( token: KtLifetimeToken, ) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.DeprecatedBinaryMod -internal class NestedClassAccessedViaInstanceReferenceImpl( - override val symbol: KtClassLikeSymbol, - firDiagnostic: KtPsiDiagnostic, - token: KtLifetimeToken, -) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.NestedClassAccessedViaInstanceReference - internal class SuperIsNotAnExpressionImpl( firDiagnostic: KtPsiDiagnostic, token: KtLifetimeToken, @@ -1742,6 +1736,12 @@ internal class InferenceUnsuccessfulForkImpl( token: KtLifetimeToken, ) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.InferenceUnsuccessfulFork +internal class NestedClassAccessedViaInstanceReferenceImpl( + override val symbol: KtClassLikeSymbol, + firDiagnostic: KtPsiDiagnostic, + token: KtLifetimeToken, +) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.NestedClassAccessedViaInstanceReference + internal class OverloadResolutionAmbiguityImpl( override val candidates: List, firDiagnostic: KtPsiDiagnostic, diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index aa289f2ec60..583983276b1 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -225,9 +225,6 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { parameter>("forbiddenFunction") parameter("suggestedFunction") } - val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error { - parameter>("symbol") - } } val SUPER by object : DiagnosticGroup("Super") { @@ -645,6 +642,9 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val INFERENCE_UNSUCCESSFUL_FORK by error { parameter("message") } + val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error { + parameter>("symbol") + } } val AMBIGUITY by object : DiagnosticGroup("Ambiguity") { diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index d4176392ea3..59c71323426 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -194,7 +194,6 @@ object FirErrors { val AMBIGUOUS_ALTERED_ASSIGN by error1>() val FORBIDDEN_BINARY_MOD by error2, String>(SourceElementPositioningStrategies.OPERATOR_MODIFIER) val DEPRECATED_BINARY_MOD by error2, String>(SourceElementPositioningStrategies.OPERATOR_MODIFIER) - val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error1>() // Super val SUPER_IS_NOT_AN_EXPRESSION by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) @@ -403,6 +402,7 @@ object FirErrors { val REDUNDANT_SPREAD_OPERATOR_IN_NAMED_FORM_IN_ANNOTATION by warning0() val REDUNDANT_SPREAD_OPERATOR_IN_NAMED_FORM_IN_FUNCTION by warning0() val INFERENCE_UNSUCCESSFUL_FORK by error1() + val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error1>() // Ambiguity val OVERLOAD_RESOLUTION_AMBIGUITY by error1>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt index 8ec80bbf5b1..ee840094715 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt @@ -68,7 +68,6 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set = setOf( "AMBIGUOUS_ALTERED_ASSIGN", "FORBIDDEN_BINARY_MOD", "DEPRECATED_BINARY_MOD", - "NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE", "SUPER_IS_NOT_AN_EXPRESSION", "SUPER_NOT_AVAILABLE", "ABSTRACT_SUPER_CALL", @@ -253,6 +252,7 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set = setOf( "NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER", "SPREAD_OF_NULLABLE", "INFERENCE_UNSUCCESSFUL_FORK", + "NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE", "OVERLOAD_RESOLUTION_AMBIGUITY", "ASSIGN_OPERATOR_AMBIGUITY", "ITERATOR_AMBIGUITY", diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt index 25d710b225d..a922aaa4013 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt @@ -399,6 +399,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NAMED_ARGUMENTS_N import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NAMED_PARAMETER_NOT_FOUND import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NAME_FOR_AMBIGUOUS_PARAMETER import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NESTED_CLASS_NOT_ALLOWED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NEWER_VERSION_IN_SINCE_KOTLIN import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NEW_INFERENCE_ERROR @@ -1184,6 +1185,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() { map.put(REDUNDANT_SPREAD_OPERATOR_IN_NAMED_FORM_IN_ANNOTATION, "Redundant spread (*) operator.") map.put(REDUNDANT_SPREAD_OPERATOR_IN_NAMED_FORM_IN_FUNCTION, "Redundant spread (*) operator.") map.put(INFERENCE_UNSUCCESSFUL_FORK, "Unsuccessful inference fork at position ''{0}''.", TO_STRING) + map.put(NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE, "Nested {0} accessed via instance reference", RENDER_CLASS_OR_OBJECT_NAME) map.put( INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION, "Type argument for type parameter ''{0}'' cannot be inferred because it has incompatible upper bounds: {1} ({2}{3}).",