[K/JS] Rework member-exportability check in a right way ^KT-61957 Fixed
This commit is contained in:
@@ -43,8 +43,7 @@ fun IrClass.jsConstructorReference(context: JsIrBackendContext): IrExpression {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun IrDeclaration.isExportedMember(context: JsIrBackendContext) =
|
fun IrDeclaration.isExportedMember(context: JsIrBackendContext) =
|
||||||
(this is IrDeclarationWithVisibility && visibility.isPublicAPI) &&
|
parentClassOrNull != null && isExported(context)
|
||||||
parentClassOrNull?.isExported(context) == true
|
|
||||||
|
|
||||||
fun IrDeclaration?.isExportedClass(context: JsIrBackendContext) =
|
fun IrDeclaration?.isExportedClass(context: JsIrBackendContext) =
|
||||||
this is IrClass && kind.isClass && isExported(context)
|
this is IrClass && kind.isClass && isExported(context)
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("enumInheritedFromTrait.kt")
|
@TestMetadata("enumInheritedFromTrait.kt")
|
||||||
public void testEnumInheritedFromTrait() throws Exception {
|
public void testEnumInheritedFromTrait() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("enumInheritedFromTrait.kt")
|
@TestMetadata("enumInheritedFromTrait.kt")
|
||||||
public void testEnumInheritedFromTrait() throws Exception {
|
public void testEnumInheritedFromTrait() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("enumInheritedFromTrait.kt")
|
@TestMetadata("enumInheritedFromTrait.kt")
|
||||||
public void testEnumInheritedFromTrait() throws Exception {
|
public void testEnumInheritedFromTrait() throws Exception {
|
||||||
|
|||||||
+6
@@ -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);
|
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
|
@Test
|
||||||
@TestMetadata("enumInheritedFromTrait.kt")
|
@TestMetadata("enumInheritedFromTrait.kt")
|
||||||
public void testEnumInheritedFromTrait() throws Exception {
|
public void testEnumInheritedFromTrait() throws Exception {
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user