From d772126f2c22d081d8488b4e60da03c939a91858 Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Wed, 7 Jun 2023 14:33:05 +0200 Subject: [PATCH] Extract diagnostics about 'sealed when' to a separate one ^KT-59152 --- .../src/org/jetbrains/kotlin/cfg/WhenChecker.kt | 2 +- .../src/org/jetbrains/kotlin/diagnostics/Errors.java | 1 + .../diagnostics/rendering/DefaultErrorMessages.java | 1 + .../diagnostics/tests/when/ReservedExhaustiveWhen.kt | 12 ++++++------ 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt index b572a8217b1..f70af59c2be 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/cfg/WhenChecker.kt @@ -480,7 +480,7 @@ object WhenChecker { fun checkSealedWhenIsReserved(sink: DiagnosticSink, element: PsiElement) { KtPsiUtil.getPreviousWord(element, "sealed")?.let { - sink.report(Errors.UNSUPPORTED.on(it, "sealed when")) + sink.report(Errors.UNSUPPORTED_SEALED_WHEN.on(it)) } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 328e7b26d9a..be1b262baed 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -78,6 +78,7 @@ public interface Errors { DiagnosticFactory0 EXPLICIT_BACKING_FIELDS_UNSUPPORTED = DiagnosticFactory0.create(ERROR); DiagnosticFactory1 UNSUPPORTED_INHERITANCE_FROM_JAVA_MEMBER_REFERENCING_KOTLIN_FUNCTION = DiagnosticFactory1.create(ERROR); + DiagnosticFactory0 UNSUPPORTED_SEALED_WHEN = DiagnosticFactory0.create(ERROR); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index 390254ede67..3fcdcb47205 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -826,6 +826,7 @@ public class DefaultErrorMessages { MAP.put(EXPLICIT_BACKING_FIELDS_UNSUPPORTED, "Explicit backing field declarations are not supported in FE 1.0"); MAP.put(UNSUPPORTED_INHERITANCE_FROM_JAVA_MEMBER_REFERENCING_KOTLIN_FUNCTION, "Inheritance of a Java member referencing 'kotlin.jvm.functions.FunctionN': {0} is unsupported", STRING); + MAP.put(UNSUPPORTED_SEALED_WHEN, "'sealed' in front of 'when' is reserved"); MAP.put(EXCEPTION_FROM_ANALYZER, "Internal Error occurred while analyzing this expression:\n{0}", THROWABLE); MAP.put(MISSING_STDLIB, "{0}. Ensure you have the standard Kotlin library in dependencies", STRING); diff --git a/compiler/testData/diagnostics/tests/when/ReservedExhaustiveWhen.kt b/compiler/testData/diagnostics/tests/when/ReservedExhaustiveWhen.kt index 4a5550073d6..6f9f6e03abb 100644 --- a/compiler/testData/diagnostics/tests/when/ReservedExhaustiveWhen.kt +++ b/compiler/testData/diagnostics/tests/when/ReservedExhaustiveWhen.kt @@ -11,22 +11,22 @@ infix fun Any.sealed(a: Any?) {} -val x = 1 sealed when (1) { +val x = 1 sealed when (1) { 1 -> 1 else -> 2 } -val x1 = 1 sealed /**/ when (1) { +val x1 = 1 sealed /**/ when (1) { 1 -> 1 else -> 2 } fun foo() { - sealed when { + sealed when { else -> {} } - 1 sealed when { + 1 sealed when { else -> {} } @@ -35,11 +35,11 @@ fun foo() { }) 1 - sealed when { + sealed when { else -> {} } - 1 sealed + 1 sealed when { else -> {} }