diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/IrJsUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/IrJsUtils.kt index 115c3d96f38..20a3e41589d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/IrJsUtils.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/IrJsUtils.kt @@ -43,8 +43,7 @@ fun IrClass.jsConstructorReference(context: JsIrBackendContext): IrExpression { } fun IrDeclaration.isExportedMember(context: JsIrBackendContext) = - (this is IrDeclarationWithVisibility && visibility.isPublicAPI) && - parentClassOrNull?.isExported(context) == true + parentClassOrNull != null && isExported(context) fun IrDeclaration?.isExportedClass(context: JsIrBackendContext) = this is IrClass && kind.isClass && isExported(context) diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java index 1400a8541a8..d1110ac8c01 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java @@ -1844,6 +1844,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/enum"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR, true); } + @Test + @TestMetadata("enumEntriesOnExportedEnum.kt") + public void testEnumEntriesOnExportedEnum() throws Exception { + runTest("js/js.translator/testData/box/enum/enumEntriesOnExportedEnum.kt"); + } + @Test @TestMetadata("enumInheritedFromTrait.kt") public void testEnumInheritedFromTrait() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java index 59575bfa7fc..bf0c998502a 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java @@ -1844,6 +1844,12 @@ public class FirJsES6BoxTestGenerated extends AbstractFirJsES6BoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/enum"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } + @Test + @TestMetadata("enumEntriesOnExportedEnum.kt") + public void testEnumEntriesOnExportedEnum() throws Exception { + runTest("js/js.translator/testData/box/enum/enumEntriesOnExportedEnum.kt"); + } + @Test @TestMetadata("enumInheritedFromTrait.kt") public void testEnumInheritedFromTrait() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java index da66c52da13..2c2fccb3311 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java @@ -1844,6 +1844,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/enum"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } + @Test + @TestMetadata("enumEntriesOnExportedEnum.kt") + public void testEnumEntriesOnExportedEnum() throws Exception { + runTest("js/js.translator/testData/box/enum/enumEntriesOnExportedEnum.kt"); + } + @Test @TestMetadata("enumInheritedFromTrait.kt") public void testEnumInheritedFromTrait() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java index 4f6d26d4e8e..555215572a7 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java @@ -1844,6 +1844,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/enum"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR, true); } + @Test + @TestMetadata("enumEntriesOnExportedEnum.kt") + public void testEnumEntriesOnExportedEnum() throws Exception { + runTest("js/js.translator/testData/box/enum/enumEntriesOnExportedEnum.kt"); + } + @Test @TestMetadata("enumInheritedFromTrait.kt") public void testEnumInheritedFromTrait() throws Exception { diff --git a/js/js.translator/testData/box/enum/enumEntriesOnExportedEnum.kt b/js/js.translator/testData/box/enum/enumEntriesOnExportedEnum.kt new file mode 100644 index 00000000000..3ec95663452 --- /dev/null +++ b/js/js.translator/testData/box/enum/enumEntriesOnExportedEnum.kt @@ -0,0 +1,19 @@ +// !LANGUAGE: +EnumEntries +// IGNORE_BACKEND: JS +// KJS_WITH_FULL_RUNTIME +// KT-61957 + +@JsExport +enum class SomeEnum { + A,B; + companion object { + @JsName("fromName") + fun fromName(name: String): SomeEnum? { + return SomeEnum.entries.find { name == it.name } + } + } +} + +fun box(): String { + return if (SomeEnum.fromName("A") == SomeEnum.A) "OK" else "SomeEnum.fromName(\"A\") != SomeEnum.A" +} \ No newline at end of file