From f5f1984a6053b912fdf1660081bc5c0a471260e0 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 16 Nov 2020 11:27:04 +0300 Subject: [PATCH] [FE] Allow declare sealed class inheritors in different files in one module #KT-13495 --- ...irOldFrontendDiagnosticsTestGenerated.java | 5 +++ .../ir/FirBlackBoxCodegenTestGenerated.java | 5 +++ .../resolve/FunctionDescriptorResolver.kt | 17 ++++--- .../lazy/descriptors/LazyClassMemberScope.kt | 4 +- .../box/sealed/multipleFiles_enabled.kt | 24 ++++++++++ .../tests/sealed/MultipleFiles_enabled.fir.kt | 30 +++++++++++++ .../tests/sealed/MultipleFiles_enabled.kt | 30 +++++++++++++ .../tests/sealed/MultipleFiles_enabled.txt | 45 +++++++++++++++++++ .../checkers/DiagnosticsTestGenerated.java | 5 +++ .../DiagnosticsUsingJavacTestGenerated.java | 5 +++ .../codegen/BlackBoxCodegenTestGenerated.java | 5 +++ .../LightAnalysisModeTestGenerated.java | 5 +++ .../ir/IrBlackBoxCodegenTestGenerated.java | 5 +++ .../kotlin/config/LanguageVersionSettings.kt | 2 + .../kotlin/resolve/DescriptorFactory.java | 14 ++++-- .../kotlin/resolve/DescriptorUtils.java | 14 +++++- .../IrJsCodegenBoxES6TestGenerated.java | 5 +++ .../IrJsCodegenBoxTestGenerated.java | 5 +++ .../semantics/JsCodegenBoxTestGenerated.java | 5 +++ .../IrCodegenBoxWasmTestGenerated.java | 5 +++ 20 files changed, 222 insertions(+), 13 deletions(-) create mode 100644 compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt create mode 100644 compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.fir.kt create mode 100644 compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.kt create mode 100644 compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.txt diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java index 36ca6647f4a..0edb6b80eef 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java @@ -20778,6 +20778,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte runTest("compiler/testData/diagnostics/tests/sealed/LocalSealed.kt"); } + @TestMetadata("MultipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.kt"); + } + @TestMetadata("NestedSealed.kt") public void testNestedSealed() throws Exception { runTest("compiler/testData/diagnostics/tests/sealed/NestedSealed.kt"); diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index cbc5d97d0d4..7f455b6029e 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -30255,6 +30255,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt index 138a5d0e756..18cf3717c3d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt @@ -323,7 +323,8 @@ class FunctionDescriptorResolver( scope: LexicalScope, classDescriptor: ClassDescriptor, classElement: KtPureClassOrObject, - trace: BindingTrace + trace: BindingTrace, + languageVersionSettings: LanguageVersionSettings ): ClassConstructorDescriptorImpl? { if (classDescriptor.kind == ClassKind.ENUM_ENTRY || !classElement.hasPrimaryConstructor()) return null return createConstructorDescriptor( @@ -333,7 +334,8 @@ class FunctionDescriptorResolver( classElement.primaryConstructorModifierList, classElement.primaryConstructor ?: classElement, classElement.primaryConstructorParameters, - trace + trace, + languageVersionSettings ) } @@ -341,7 +343,8 @@ class FunctionDescriptorResolver( scope: LexicalScope, classDescriptor: ClassDescriptor, constructor: KtSecondaryConstructor, - trace: BindingTrace + trace: BindingTrace, + languageVersionSettings: LanguageVersionSettings ): ClassConstructorDescriptorImpl { return createConstructorDescriptor( scope, @@ -350,7 +353,8 @@ class FunctionDescriptorResolver( constructor.modifierList, constructor, constructor.valueParameters, - trace + trace, + languageVersionSettings ) } @@ -361,7 +365,8 @@ class FunctionDescriptorResolver( modifierList: KtModifierList?, declarationToTrace: KtPureElement, valueParameters: List, - trace: BindingTrace + trace: BindingTrace, + languageVersionSettings: LanguageVersionSettings ): ClassConstructorDescriptorImpl { val constructorDescriptor = ClassConstructorDescriptorImpl.create( classDescriptor, @@ -387,7 +392,7 @@ class FunctionDescriptorResolver( resolveValueParameters(constructorDescriptor, parameterScope, valueParameters, trace, null), resolveVisibilityFromModifiers( modifierList, - DescriptorUtils.getDefaultConstructorVisibility(classDescriptor) + DescriptorUtils.getDefaultConstructorVisibility(classDescriptor, languageVersionSettings.supportsFeature(LanguageFeature.FreedomForSealedClasses)) ) ) constructor.returnType = classDescriptor.defaultType diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt index 1b96443b57e..a58ac3c2ca5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyClassMemberScope.kt @@ -488,7 +488,7 @@ open class LazyClassMemberScope( if (DescriptorUtils.canHaveDeclaredConstructors(thisDescriptor) || hasPrimaryConstructor) { val constructor = c.functionDescriptorResolver.resolvePrimaryConstructorDescriptor( - thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, classOrObject, trace + thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, classOrObject, trace, c.languageVersionSettings ) constructor ?: return null setDeferredReturnType(constructor) @@ -505,7 +505,7 @@ open class LazyClassMemberScope( return classOrObject.secondaryConstructors.map { constructor -> val descriptor = c.functionDescriptorResolver.resolveSecondaryConstructorDescriptor( - thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, constructor, trace + thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, constructor, trace, c.languageVersionSettings ) setDeferredReturnType(descriptor) descriptor diff --git a/compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt b/compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt new file mode 100644 index 00000000000..e975dbe9924 --- /dev/null +++ b/compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-13495 +// IGNORE_BACKEND_FIR: JVM_IR +// !LANGUAGE: +FreedomForSealedClasses + +// FILE: a.kt + +sealed class Base { + class A : Base() +} + +// FILE: b.kt + +class B : Base() + +// FILE: c.kt + +fun getLetter(base: Base): String = when (base) { + is Base.A -> "O" + is B -> "K" +} + +fun box(): String { + return getLetter(Base.A()) + getLetter(B()) +} diff --git a/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.fir.kt b/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.fir.kt new file mode 100644 index 00000000000..062325d1383 --- /dev/null +++ b/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.fir.kt @@ -0,0 +1,30 @@ +// ISSUE: KT-13495 +// !DIAGNOSTICS: -UNUSED_VARIABLE +// !LANGUAGE: +FreedomForSealedClasses + +// FILE: a.kt + +sealed class Base { + class A : Base() +} + +// FILE: b.kt + +class B : Base() + +// FILE: c.kt + +class Container { + class C : Base() + + inner class D : Base() +} + +// FILE: d.kt + +fun test(base: Base) { + val x = when (base) { + is Base.A -> 1 + is B -> 2 + } +} diff --git a/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.kt b/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.kt new file mode 100644 index 00000000000..76ee023fea1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.kt @@ -0,0 +1,30 @@ +// ISSUE: KT-13495 +// !DIAGNOSTICS: -UNUSED_VARIABLE +// !LANGUAGE: +FreedomForSealedClasses + +// FILE: a.kt + +sealed class Base { + class A : Base() +} + +// FILE: b.kt + +class B : Base() + +// FILE: c.kt + +class Container { + class C : Base() + + inner class D : Base() +} + +// FILE: d.kt + +fun test(base: Base) { + val x = when (base) { + is Base.A -> 1 + is B -> 2 + } +} diff --git a/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.txt b/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.txt new file mode 100644 index 00000000000..c03f125ae7a --- /dev/null +++ b/compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.txt @@ -0,0 +1,45 @@ +package + +public fun test(/*0*/ base: Base): kotlin.Unit + +public final class B : Base { + public constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public sealed class Base { + internal constructor Base() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class A : Base { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class Container { + public constructor Container() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class C : Base { + public constructor C() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final inner class D : Base { + public constructor D() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} diff --git a/compiler/tests-gen/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 427baf31113..111cc4e95a3 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -20855,6 +20855,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTestWithFirVali runTest("compiler/testData/diagnostics/tests/sealed/LocalSealed.kt"); } + @TestMetadata("MultipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.kt"); + } + @TestMetadata("NestedSealed.kt") public void testNestedSealed() throws Exception { runTest("compiler/testData/diagnostics/tests/sealed/NestedSealed.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 0f50aa981ae..7be16516432 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -20780,6 +20780,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/sealed/LocalSealed.kt"); } + @TestMetadata("MultipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/diagnostics/tests/sealed/MultipleFiles_enabled.kt"); + } + @TestMetadata("NestedSealed.kt") public void testNestedSealed() throws Exception { runTest("compiler/testData/diagnostics/tests/sealed/NestedSealed.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 1ca163d8a9f..66606008be0 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -32026,6 +32026,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 29bc2f066da..b589166eb2b 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -29660,6 +29660,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 77118ac6c05..5ccaafe90ca 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -30255,6 +30255,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt"); diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index c64025f7364..487e7a6e9ef 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -143,6 +143,8 @@ enum class LanguageFeature( UseCorrectExecutionOrderForVarargArguments(KOTLIN_1_5, kind = BUG_FIX), JvmRecordSupport(KOTLIN_1_5), + FreedomForSealedClasses(KOTLIN_1_5), + // Temporarily disabled, see KT-27084/KT-22379 SoundSmartcastFromLoopConditionForLoopAssignedVariables(sinceVersion = null, kind = BUG_FIX), diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java index d911ccb55f8..433ed53721b 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java @@ -35,10 +35,14 @@ import static org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt.getB public class DescriptorFactory { private static class DefaultClassConstructorDescriptor extends ClassConstructorDescriptorImpl { - public DefaultClassConstructorDescriptor(@NotNull ClassDescriptor containingClass, @NotNull SourceElement source) { + public DefaultClassConstructorDescriptor( + @NotNull ClassDescriptor containingClass, + @NotNull SourceElement source, + boolean freedomForSealedInterfacesSupported + ) { super(containingClass, null, Annotations.Companion.getEMPTY(), true, Kind.DECLARATION, source); initialize(Collections.emptyList(), - getDefaultConstructorVisibility(containingClass)); + getDefaultConstructorVisibility(containingClass, freedomForSealedInterfacesSupported)); } } @@ -130,7 +134,11 @@ public class DescriptorFactory { @NotNull ClassDescriptor containingClass, @NotNull SourceElement source ) { - return new DefaultClassConstructorDescriptor(containingClass, source); + /* + * Language version settings are needed here only for computing default visibility of constructors of sealed classes + * Since object can not be sealed class it's OK to pass default settings here + */ + return new DefaultClassConstructorDescriptor(containingClass, source, false); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java index b019f7d702b..005b58cf637 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java @@ -380,11 +380,21 @@ public class DescriptorUtils { } @NotNull - public static DescriptorVisibility getDefaultConstructorVisibility(@NotNull ClassDescriptor classDescriptor) { + public static DescriptorVisibility getDefaultConstructorVisibility( + @NotNull ClassDescriptor classDescriptor, + boolean freedomForSealedInterfacesSupported + ) { ClassKind classKind = classDescriptor.getKind(); - if (classKind == ClassKind.ENUM_CLASS || classKind.isSingleton() || isSealedClass(classDescriptor)) { + if (classKind == ClassKind.ENUM_CLASS || classKind.isSingleton()) { return DescriptorVisibilities.PRIVATE; } + if (isSealedClass(classDescriptor)) { + if (freedomForSealedInterfacesSupported) { + return DescriptorVisibilities.INTERNAL; + } else { + return DescriptorVisibilities.PRIVATE; + } + } if (isAnonymousObject(classDescriptor)) { return DescriptorVisibilities.DEFAULT_VISIBILITY; } diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index 15f4be5fddb..e2d8f4db811 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -24526,6 +24526,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index a2f65e44e31..010e8fcf14c 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -24526,6 +24526,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 293c78c94ce..6236c45be81 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -24526,6 +24526,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 0fc21b69740..20538c6806f 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -12997,6 +12997,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sealed"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true); } + @TestMetadata("multipleFiles_enabled.kt") + public void testMultipleFiles_enabled() throws Exception { + runTest("compiler/testData/codegen/box/sealed/multipleFiles_enabled.kt"); + } + @TestMetadata("objects.kt") public void testObjects() throws Exception { runTest("compiler/testData/codegen/box/sealed/objects.kt");