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 <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-10-20 18:04:21 +00:00
committed by Space Team
parent ad0fad5fad
commit f98451e381
7 changed files with 25 additions and 23 deletions
@@ -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 ->
@@ -414,11 +414,6 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val suggestedFunction: String
}
interface NestedClassAccessedViaInstanceReference : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = NestedClassAccessedViaInstanceReference::class
val symbol: KtClassLikeSymbol
}
interface SuperIsNotAnExpression : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = SuperIsNotAnExpression::class
}
@@ -1452,6 +1447,11 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val message: String
}
interface NestedClassAccessedViaInstanceReference : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = NestedClassAccessedViaInstanceReference::class
val symbol: KtClassLikeSymbol
}
interface OverloadResolutionAmbiguity : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = OverloadResolutionAmbiguity::class
val candidates: List<KtSymbol>
@@ -480,12 +480,6 @@ internal class DeprecatedBinaryModImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.DeprecatedBinaryMod
internal class NestedClassAccessedViaInstanceReferenceImpl(
override val symbol: KtClassLikeSymbol,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.NestedClassAccessedViaInstanceReference
internal class SuperIsNotAnExpressionImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
@@ -1742,6 +1736,12 @@ internal class InferenceUnsuccessfulForkImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.InferenceUnsuccessfulFork
internal class NestedClassAccessedViaInstanceReferenceImpl(
override val symbol: KtClassLikeSymbol,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.NestedClassAccessedViaInstanceReference
internal class OverloadResolutionAmbiguityImpl(
override val candidates: List<KtSymbol>,
firDiagnostic: KtPsiDiagnostic,
@@ -225,9 +225,6 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
parameter<FirBasedSymbol<*>>("forbiddenFunction")
parameter<String>("suggestedFunction")
}
val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error<PsiElement> {
parameter<FirClassLikeSymbol<*>>("symbol")
}
}
val SUPER by object : DiagnosticGroup("Super") {
@@ -645,6 +642,9 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
val INFERENCE_UNSUCCESSFUL_FORK by error<PsiElement> {
parameter<String>("message")
}
val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error<PsiElement> {
parameter<FirClassLikeSymbol<*>>("symbol")
}
}
val AMBIGUITY by object : DiagnosticGroup("Ambiguity") {
@@ -194,7 +194,6 @@ object FirErrors {
val AMBIGUOUS_ALTERED_ASSIGN by error1<PsiElement, List<String?>>()
val FORBIDDEN_BINARY_MOD by error2<PsiElement, FirBasedSymbol<*>, String>(SourceElementPositioningStrategies.OPERATOR_MODIFIER)
val DEPRECATED_BINARY_MOD by error2<PsiElement, FirBasedSymbol<*>, String>(SourceElementPositioningStrategies.OPERATOR_MODIFIER)
val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error1<PsiElement, FirClassLikeSymbol<*>>()
// Super
val SUPER_IS_NOT_AN_EXPRESSION by error0<PsiElement>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
@@ -403,6 +402,7 @@ object FirErrors {
val REDUNDANT_SPREAD_OPERATOR_IN_NAMED_FORM_IN_ANNOTATION by warning0<KtExpression>()
val REDUNDANT_SPREAD_OPERATOR_IN_NAMED_FORM_IN_FUNCTION by warning0<KtExpression>()
val INFERENCE_UNSUCCESSFUL_FORK by error1<PsiElement, String>()
val NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE by error1<PsiElement, FirClassLikeSymbol<*>>()
// Ambiguity
val OVERLOAD_RESOLUTION_AMBIGUITY by error1<PsiElement, Collection<FirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
@@ -68,7 +68,6 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set<String> = 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<String> = 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",
@@ -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}).",