Refact stdlib generator, add support for different backends
[JS IR BE] Runtime fixes * Do not generate external declarations for IR BE * Move `arrayToString` helper function out of shared JS stdlib * Fix arrays type check for IR BE
This commit is contained in:
@@ -65,6 +65,10 @@ private val runtimeSources = listOfKtFilesFrom(
|
||||
|
||||
"libraries/stdlib/js/src/kotlin/currentBeMisc.kt",
|
||||
|
||||
// IR BE has its own generated sources
|
||||
"libraries/stdlib/js/src/generated",
|
||||
"libraries/stdlib/js/src/kotlin/collectionsExternal.kt",
|
||||
|
||||
// Full version is defined in stdlib
|
||||
// This file is useful for smaller subset of runtime sources
|
||||
"libraries/stdlib/js/irRuntime/rangeExtensions.kt",
|
||||
|
||||
@@ -167,6 +167,7 @@ object NashornIrJsTestChecker : AbstractNashornJsTestChecker() {
|
||||
|
||||
listOf(
|
||||
BasicBoxTest.TEST_DATA_DIR_PATH + "nashorn-polyfills.js",
|
||||
"libraries/stdlib/js/src/js/polyfills.js",
|
||||
"js/js.translator/testData/out/irBox/testRuntime.js"
|
||||
).forEach(engine::loadFile)
|
||||
|
||||
|
||||
+5
@@ -7558,6 +7558,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/standardClasses/arraySize.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("arraySort.kt")
|
||||
public void testArraySort() throws Exception {
|
||||
runTest("js/js.translator/testData/box/standardClasses/arraySort.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("arraysIterator.kt")
|
||||
public void testArraysIterator() throws Exception {
|
||||
runTest("js/js.translator/testData/box/standardClasses/arraysIterator.kt");
|
||||
|
||||
+5
@@ -7558,6 +7558,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/standardClasses/arraySize.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("arraySort.kt")
|
||||
public void testArraySort() throws Exception {
|
||||
runTest("js/js.translator/testData/box/standardClasses/arraySort.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("arraysIterator.kt")
|
||||
public void testArraysIterator() throws Exception {
|
||||
runTest("js/js.translator/testData/box/standardClasses/arraysIterator.kt");
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1284
|
||||
package foo
|
||||
|
||||
fun test(actual: DoubleArray, expect: DoubleArray): String {
|
||||
for (index in 0 until expect.size) {
|
||||
val expectedElem: Any = expect[index]
|
||||
val actualElem: Any = actual[index]
|
||||
if (expectedElem != actualElem) {
|
||||
return "Content at index $index does not match: $expectedElem != $actualElem"
|
||||
}
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val array = doubleArrayOf(Double.NaN, Double.POSITIVE_INFINITY, Double.NaN, 1.0, Double.NaN, +0.0, Double.NaN, -0.0, Double.NaN, -1.0, Double.NaN, Double.NEGATIVE_INFINITY)
|
||||
array.sort()
|
||||
|
||||
return test(array, doubleArrayOf(Double.NEGATIVE_INFINITY, -1.0, -0.0, +0.0, 1.0, Double.POSITIVE_INFINITY, Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN))
|
||||
}
|
||||
Reference in New Issue
Block a user