KT-34770 JS. Configurable properties. Test
This commit is contained in:
committed by
Zalim Bashorov
parent
103fd093e1
commit
79bec82430
+8
-1
@@ -6479,7 +6479,9 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAllFilesPresentInPropertyAccess() throws Exception {
|
public void testAllFilesPresentInPropertyAccess() throws Exception {
|
||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/propertyAccess"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR, true);
|
KotlinTestUtils
|
||||||
|
.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/propertyAccess"),
|
||||||
|
Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("classUsesPackageProperties.kt")
|
@TestMetadata("classUsesPackageProperties.kt")
|
||||||
@@ -6487,6 +6489,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
|||||||
runTest("js/js.translator/testData/box/propertyAccess/classUsesPackageProperties.kt");
|
runTest("js/js.translator/testData/box/propertyAccess/classUsesPackageProperties.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("configurable.kt")
|
||||||
|
public void testConfigurable() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/propertyAccess/configurable.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("customGetter.kt")
|
@TestMetadata("customGetter.kt")
|
||||||
public void testCustomGetter() throws Exception {
|
public void testCustomGetter() throws Exception {
|
||||||
runTest("js/js.translator/testData/box/propertyAccess/customGetter.kt");
|
runTest("js/js.translator/testData/box/propertyAccess/customGetter.kt");
|
||||||
|
|||||||
+8
-1
@@ -6504,7 +6504,9 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAllFilesPresentInPropertyAccess() throws Exception {
|
public void testAllFilesPresentInPropertyAccess() throws Exception {
|
||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/propertyAccess"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS, true);
|
KotlinTestUtils
|
||||||
|
.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/propertyAccess"),
|
||||||
|
Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("classUsesPackageProperties.kt")
|
@TestMetadata("classUsesPackageProperties.kt")
|
||||||
@@ -6512,6 +6514,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
|||||||
runTest("js/js.translator/testData/box/propertyAccess/classUsesPackageProperties.kt");
|
runTest("js/js.translator/testData/box/propertyAccess/classUsesPackageProperties.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("configurable.kt")
|
||||||
|
public void testConfigurable() throws Exception {
|
||||||
|
runTest("js/js.translator/testData/box/propertyAccess/configurable.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("customGetter.kt")
|
@TestMetadata("customGetter.kt")
|
||||||
public void testCustomGetter() throws Exception {
|
public void testCustomGetter() throws Exception {
|
||||||
runTest("js/js.translator/testData/box/propertyAccess/customGetter.kt");
|
runTest("js/js.translator/testData/box/propertyAccess/customGetter.kt");
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
// EXPECTED_REACHABLE_NODES: 1325
|
||||||
|
// KJS_WITH_FULL_RUNTIME
|
||||||
|
package foo
|
||||||
|
|
||||||
|
external interface EP {
|
||||||
|
val simpleProp: Int
|
||||||
|
val anotherProp: String
|
||||||
|
val propWithGetter: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
class P : EP {
|
||||||
|
override val simpleProp = 13
|
||||||
|
override val anotherProp = "42"
|
||||||
|
override val propWithGetter: Boolean
|
||||||
|
get() = true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun usages() {
|
||||||
|
val p = P()
|
||||||
|
assertEquals(13, p.simpleProp)
|
||||||
|
assertEquals("42", p.anotherProp)
|
||||||
|
assertEquals(true, p.propWithGetter)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
usages()
|
||||||
|
|
||||||
|
val prototype = P::class.js.asDynamic().prototype
|
||||||
|
|
||||||
|
assertTrue(isConfigurable(prototype, "simpleProp"))
|
||||||
|
assertTrue(isConfigurable(prototype, "anotherProp"))
|
||||||
|
assertTrue(isConfigurable(prototype, "propWithGetter"))
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isConfigurable(obj: Any, prop: String): Boolean =
|
||||||
|
js("Object")
|
||||||
|
.getOwnPropertyDescriptor(obj, prop)
|
||||||
|
.configurable
|
||||||
Reference in New Issue
Block a user