From 2dfdd8dcf6f272e8a5ad2397389daa3d0be32e7e Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Wed, 7 Jun 2023 14:40:59 +0200 Subject: [PATCH] Extract diagnostics about 'sealed fun interface' to a separate one ^KT-59152 --- .../frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java | 1 + .../kotlin/diagnostics/rendering/DefaultErrorMessages.java | 1 + .../kotlin/resolve/checkers/SealedInterfaceAllowedChecker.kt | 2 +- .../diagnostics/tests/sealed/interfaces/sealedFunInterface.kt | 4 ++-- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index be1b262baed..fb4397df2d0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -79,6 +79,7 @@ public interface Errors { DiagnosticFactory1 UNSUPPORTED_INHERITANCE_FROM_JAVA_MEMBER_REFERENCING_KOTLIN_FUNCTION = DiagnosticFactory1.create(ERROR); DiagnosticFactory0 UNSUPPORTED_SEALED_WHEN = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 UNSUPPORTED_SEALED_FUN_INTERFACE = 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 3fcdcb47205..ef085e873fc 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -827,6 +827,7 @@ public class DefaultErrorMessages { 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(UNSUPPORTED_SEALED_FUN_INTERFACE, "'sealed fun interface' is unsupported"); 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/frontend/src/org/jetbrains/kotlin/resolve/checkers/SealedInterfaceAllowedChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/SealedInterfaceAllowedChecker.kt index bcd495646ff..adcbe074238 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/SealedInterfaceAllowedChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/SealedInterfaceAllowedChecker.kt @@ -18,7 +18,7 @@ object SealedInterfaceAllowedChecker : DeclarationChecker { val keyword = declaration.modifierList?.getModifier(KtTokens.SEALED_KEYWORD) ?: return val diagnostic = if (context.languageVersionSettings.supportsFeature(LanguageFeature.SealedInterfaces)) { if (descriptor.isFun) { - Errors.UNSUPPORTED.on(keyword, "sealed fun interfaces") + Errors.UNSUPPORTED_SEALED_FUN_INTERFACE.on(keyword) } else return } else { Errors.UNSUPPORTED_FEATURE.on(keyword, LanguageFeature.SealedInterfaces to context.languageVersionSettings) diff --git a/compiler/testData/diagnostics/tests/sealed/interfaces/sealedFunInterface.kt b/compiler/testData/diagnostics/tests/sealed/interfaces/sealedFunInterface.kt index ba4ae885b42..4252c1afa5d 100644 --- a/compiler/testData/diagnostics/tests/sealed/interfaces/sealedFunInterface.kt +++ b/compiler/testData/diagnostics/tests/sealed/interfaces/sealedFunInterface.kt @@ -1,9 +1,9 @@ -sealed fun interface A { // error +sealed fun interface A { // error fun foo() } sealed interface Base { - sealed fun interface Derived : Base { // error + sealed fun interface Derived : Base { // error fun foo() } }