Reorganize stdlib-js sources specific to the current JS backend

Move kotlin-stdlib-js project and the sources specific to the current backend to 'stdlib/js-v1' directory,
but leave sources that can be shared with the new IR backend in the common 'stdlib/js' location
with exception for 'stdlib/js/src/generated', which is used exclusively for current backend.
This simplifies sourceset configuration when building stdlib with the new backend.
This commit is contained in:
Svyatoslav Kuzmich
2019-04-11 16:25:40 +03:00
parent 9dd9efd4aa
commit b1d303b027
70 changed files with 72 additions and 115 deletions
+24 -56
View File
@@ -22,7 +22,7 @@ sourceSets {
}
val unimplementedNativeBuiltIns =
(file("$rootDir/core/builtins/native/kotlin/").list().toSet() - file("$rootDir/libraries/stdlib/js/irRuntime/builtins/").list())
(file("$rootDir/core/builtins/native/kotlin/").list().toSet() - file("$rootDir/libraries/stdlib/js-ir/builtins/").list())
.map { "core/builtins/native/kotlin/$it" }
// Required to compile native builtins with the rest of runtime
@@ -35,74 +35,37 @@ val builtInsHeader = """@file:Suppress(
)
"""
val fullRuntimeSources by task<Copy> {
val fullRuntimeSources by task<Sync> {
val sources = listOf(
"core/builtins/src/kotlin/",
"libraries/stdlib/common/src/",
"libraries/stdlib/src/kotlin/",
"libraries/stdlib/js/src/kotlin/",
"libraries/stdlib/js/src/generated/",
"libraries/stdlib/js/irRuntime/",
"libraries/stdlib/js/runtime/",
"libraries/stdlib/unsigned/",
"libraries/stdlib/js/src/",
"libraries/stdlib/js/runtime/",
"libraries/stdlib/js-ir/builtins/",
"libraries/stdlib/js-ir/src/",
"libraries/stdlib/js-ir/runtime/",
// TODO get rid - move to test module
"js/js.translator/testData/_commonFiles/"
) + unimplementedNativeBuiltIns
val excluded = listOf(
// stdlib/js/src/generated is used exclusively for current `js-v1` backend.
"libraries/stdlib/js/src/generated/**",
"libraries/stdlib/common/src/kotlin/JvmAnnotationsH.kt",
"libraries/stdlib/src/kotlin/annotations/Multiplatform.kt",
"libraries/stdlib/common/src/kotlin/NativeAnnotationsH.kt",
// TODO: Support Int.pow
"libraries/stdlib/js/src/kotlin/random/PlatformRandom.kt",
// Fails with: EXPERIMENTAL_IS_NOT_ENABLED
"libraries/stdlib/common/src/kotlin/annotations/Annotations.kt",
// Conflicts with libraries/stdlib/js/src/kotlin/annotations.kt
"libraries/stdlib/js/runtime/hacks.kt",
// TODO: Reuse in IR BE
"libraries/stdlib/js/runtime/Enum.kt",
// JS-specific optimized version of emptyArray() already defined
"core/builtins/src/kotlin/ArrayIntrinsics.kt",
// Unnecessary for now
"libraries/stdlib/js/src/kotlin/dom/**",
"libraries/stdlib/js/src/kotlin/browser/**",
// TODO: fix compilation issues in arrayPlusCollection
// Replaced with irRuntime/kotlinHacks.kt
"libraries/stdlib/js/src/kotlin/kotlin.kt",
"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/smallRuntimeMissingDeclarations.kt",
// Mostly array-specific stuff
"libraries/stdlib/js/src/kotlin/builtins.kt",
// coroutines
// TODO: merge coroutines_13 with JS BE coroutines
"libraries/stdlib/js/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt",
"libraries/stdlib/js/src/kotlin/coroutines/CoroutineImpl.kt",
// Inlining of js fun doesn't update the variables inside
"libraries/stdlib/js/src/kotlin/jsTypeOf.kt",
"libraries/stdlib/js/src/kotlin/collections/utils.kt",
// TODO: Remove stub
"libraries/stdlib/js/src/kotlin/builtins.kt",
// Expect declarations get thrown away and libraries/kotlin.test/common/src/main/kotlin/kotlin/test/Assertions.kt doesn't compile
"libraries/stdlib/common/src/kotlin/NativeAnnotationsH.kt"
)
@@ -127,7 +90,7 @@ val fullRuntimeSources by task<Copy> {
}
}
val reducedRuntimeSources by task<Copy> {
val reducedRuntimeSources by task<Sync> {
dependsOn(fullRuntimeSources)
from(fullRuntimeSources.outputs.files.singleFile) {
@@ -151,8 +114,11 @@ val reducedRuntimeSources by task<Copy> {
"libraries/stdlib/common/src/kotlin/UMath.kt",
"libraries/stdlib/common/src/kotlin/collections/**",
"libraries/stdlib/common/src/kotlin/ioH.kt",
"libraries/stdlib/js/irRuntime/collectionsHacks.kt",
"libraries/stdlib/js/irRuntime/generated/**",
"libraries/stdlib/js-ir/runtime/collectionsHacks.kt",
"libraries/stdlib/js-ir/src/generated/**",
"libraries/stdlib/js/src/jquery/**",
"libraries/stdlib/js/src/org.w3c/**",
"libraries/stdlib/js/src/kotlin/char.kt",
"libraries/stdlib/js/src/kotlin/collections.kt",
"libraries/stdlib/js/src/kotlin/collections/**",
"libraries/stdlib/js/src/kotlin/console.kt",
@@ -171,13 +137,15 @@ val reducedRuntimeSources by task<Copy> {
"libraries/stdlib/src/kotlin/random/URandom.kt",
"libraries/stdlib/src/kotlin/text/**",
"libraries/stdlib/src/kotlin/util/KotlinVersion.kt",
"libraries/stdlib/src/kotlin/util/Tuples.kt"
"libraries/stdlib/src/kotlin/util/Tuples.kt",
"libraries/stdlib/js/src/kotlin/dom/**",
"libraries/stdlib/js/src/kotlin/browser/**"
)
)
}
from("$rootDir/libraries/stdlib/js/irRuntime/smallRuntimeMissingDeclarations.kt") {
into("libraries/stdlib/js/irRuntime/")
from("$rootDir/libraries/stdlib/js-ir/smallRuntime") {
into("libraries/stdlib/js-ir/runtime/")
}
into("$buildDir/reducedRuntime/src")
@@ -226,4 +194,4 @@ val generateKotlinTestKLib by task<NoDebugJavaExec> {
)
}
testsJar {}
testsJar {}
@@ -34,8 +34,10 @@ class CodeConformanceTest : TestCase() {
"js/js.translator/testData/node_modules",
"libraries/kotlin.test/js/it/.gradle",
"libraries/kotlin.test/js/it/node_modules",
"libraries/stdlib/js/.gradle",
"libraries/stdlib/js/build",
"libraries/stdlib/js-v1/.gradle",
"libraries/stdlib/js-v1/build",
"libraries/stdlib/js-ir/.gradle",
"libraries/stdlib/js-ir/build",
"libraries/reflect/build",
"libraries/reflect/api/src/java9/java/kotlin/reflect/jvm/internal/impl",
"libraries/tools/binary-compatibility-validator/src/main/kotlin/org.jetbrains.kotlin.tools",
@@ -66,12 +68,14 @@ class CodeConformanceTest : TestCase() {
"js/js.tests/.gradle",
"js/js.translator/testData/node_modules",
"libraries/stdlib/common/build",
"libraries/stdlib/js/.gradle",
"libraries/stdlib/js/build",
"libraries/stdlib/js/irRuntime/longjs.kt",
"libraries/stdlib/js-v1/.gradle",
"libraries/stdlib/js-v1/build",
"libraries/stdlib/js-ir/.gradle",
"libraries/stdlib/js-ir/build",
"libraries/stdlib/js-ir/runtime/longjs.kt",
"libraries/kotlin.test/js/it/.gradle",
"libraries/kotlin.test/js/it/node_modules",
"libraries/stdlib/js/node_modules",
"libraries/stdlib/js-v1/node_modules",
"libraries/tools/kotlin-maven-plugin-test/target",
"libraries/tools/kotlin-gradle-plugin-integration-tests/build",
"libraries/tools/kotlin-test-nodejs-runner/node_modules",