diff --git a/.gitignore b/.gitignore index 076d0870fa3..176f34959a5 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,9 @@ build/ .idea/artifacts/kotlin_main_kts_jar.xml .idea/artifacts/kotlin_compiler_client_embeddable_jar.xml .idea/artifacts/kotlin_reflect_jar.xml +.idea/artifacts/kotlin_stdlib_js_ir_* +.idea/artifacts/kotlin_test_js_ir_* +.idea/artifacts/kotlin_stdlib_wasm_* .idea/jarRepositories.xml kotlin-ultimate/ node_modules/ diff --git a/.idea/misc.xml b/.idea/misc.xml index 32521f39d50..49b192df7a8 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -66,7 +66,7 @@ http://www.w3.org/1999/xhtml - + diff --git a/build.gradle.kts b/build.gradle.kts index ec11310af96..fc158934a40 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -38,6 +38,7 @@ if (kotlinBuildProperties.buildScanServer != null) { } plugins { + base idea id("jps-compatible") id("org.jetbrains.gradle.plugin.idea-ext") @@ -53,7 +54,6 @@ pill { } val isTeamcityBuild = project.kotlinBuildProperties.isTeamcityBuild -val includeStdlibJsIr by extra(project.kotlinBuildProperties.includeStdlibJsIr) val configuredJdks: List = getConfiguredJdks().also { @@ -280,9 +280,7 @@ val coreLibProjects = listOfNotNull( ":kotlin-stdlib", ":kotlin-stdlib-common", ":kotlin-stdlib-js", - // Exclude JS IR from core libs because it depends on local compiler build, which - // in turn depends on local JVM stdlib. It slows down library testing. - ":kotlin-stdlib-js-ir".takeIf { includeStdlibJsIr }, + ":kotlin-stdlib-js-ir", ":kotlin-stdlib-jdk7", ":kotlin-stdlib-jdk8", ":kotlin-test:kotlin-test-annotations-common", @@ -292,6 +290,7 @@ val coreLibProjects = listOfNotNull( ":kotlin-test:kotlin-test-junit5", ":kotlin-test:kotlin-test-testng", ":kotlin-test:kotlin-test-js".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, + ":kotlin-test:kotlin-test-js-ir".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, ":kotlin-reflect", ":kotlin-coroutines-experimental-compat" ) @@ -497,7 +496,7 @@ val ideaPlugin by task { } tasks { - register("clean") { + named("clean") { doLast { delete("$buildDir/repo") delete(distDir) @@ -751,7 +750,7 @@ tasks { } } - register("check") { + named("check") { dependsOn("test") } diff --git a/buildSrc/src/main/kotlin/BuildPropertiesExt.kt b/buildSrc/src/main/kotlin/BuildPropertiesExt.kt index 9fe0a600bb9..ffaf6d2db72 100644 --- a/buildSrc/src/main/kotlin/BuildPropertiesExt.kt +++ b/buildSrc/src/main/kotlin/BuildPropertiesExt.kt @@ -18,5 +18,3 @@ val KotlinBuildProperties.proguard: Boolean get() = postProcessing && getBoolean val KotlinBuildProperties.jarCompression: Boolean get() = getBoolean("kotlin.build.jar.compression", isTeamcityBuild) val KotlinBuildProperties.ignoreTestFailures: Boolean get() = getBoolean("ignoreTestFailures", isTeamcityBuild) - -val KotlinBuildProperties.includeStdlibJsIr: Boolean get() = getBoolean("include.stdlib.js.ir", isTeamcityBuild) \ No newline at end of file diff --git a/compiler/tests-against-klib/build.gradle.kts b/compiler/tests-against-klib/build.gradle.kts index d7c5b15cbd9..d3c77c1837e 100644 --- a/compiler/tests-against-klib/build.gradle.kts +++ b/compiler/tests-against-klib/build.gradle.kts @@ -21,8 +21,7 @@ testsJar {} projectTest(parallel = true) { dependsOn(":dist") - dependsOn(":kotlin-stdlib-js-ir:generateFullRuntimeKLib") - + dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") workingDir = rootDir systemProperty("kotlin.test.script.classpath", testSourceSet.output.classesDirs.joinToString(File.pathSeparator)) } diff --git a/compiler/tests-against-klib/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCompileKotlinAgainstKlibTest.kt b/compiler/tests-against-klib/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCompileKotlinAgainstKlibTest.kt index 098bac21871..b7c1280e729 100644 --- a/compiler/tests-against-klib/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCompileKotlinAgainstKlibTest.kt +++ b/compiler/tests-against-klib/tests/org/jetbrains/kotlin/codegen/ir/AbstractIrCompileKotlinAgainstKlibTest.kt @@ -79,7 +79,7 @@ abstract class AbstractCompileKotlinAgainstKlibTest : AbstractBlackBoxCodegenTes listOf( "-output", klibName, "-Xir-produce-klib-file", - "-libraries", "libraries/stdlib/js-ir/build/fullRuntime/klib/" + "-libraries", "libraries/stdlib/js-ir/build/classes/kotlin/js/main/" ) + sourceFiles ) if (exitCode != ExitCode.OK) { diff --git a/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt b/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt index 538f93780f4..03ac659ff42 100644 --- a/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt @@ -29,6 +29,7 @@ class CodeConformanceTest : TestCase() { private val SOURCES_BUNCH_FILE_PATTERN = Pattern.compile("(.+\\.java|.+\\.kt|.+\\.js)(\\.\\w+)?") private const val MAX_STEPS_COUNT = 100 private val EXCLUDED_FILES_AND_DIRS = listOf( + "build/js", "buildSrc", "compiler/fir/lightTree/testData", "compiler/testData/psi/kdoc", @@ -48,6 +49,8 @@ class CodeConformanceTest : TestCase() { "libraries/reflect/build", "libraries/stdlib/js-ir/.gradle", "libraries/stdlib/js-ir/build", + "libraries/stdlib/js-ir-minimal-for-test/.gradle", + "libraries/stdlib/js-ir-minimal-for-test/build", "libraries/stdlib/js-v1/.gradle", "libraries/stdlib/js-v1/build", "libraries/tools/binary-compatibility-validator/src/main/kotlin/org.jetbrains.kotlin.tools", @@ -67,6 +70,7 @@ class CodeConformanceTest : TestCase() { ).map(::File) private val COPYRIGHT_EXCLUDED_FILES_AND_DIRS = listOf( + "build", "buildSrc/prepare-deps/build", "compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt", "dependencies", @@ -83,6 +87,8 @@ class CodeConformanceTest : TestCase() { "libraries/stdlib/js-ir/build", "libraries/stdlib/js-ir/build/", "libraries/stdlib/js-ir/runtime/longjs.kt", + "libraries/stdlib/js-ir-minimal-for-test/.gradle", + "libraries/stdlib/js-ir-minimal-for-test/build", "libraries/stdlib/js-v1/.gradle", "libraries/stdlib/js-v1/build", "libraries/stdlib/js-v1/node_modules", diff --git a/js/js.tests/build.gradle.kts b/js/js.tests/build.gradle.kts index 3ae967ac116..5f410e04db9 100644 --- a/js/js.tests/build.gradle.kts +++ b/js/js.tests/build.gradle.kts @@ -39,7 +39,6 @@ dependencies { testCompileOnly(intellijDep()) { includeJars("idea", "idea_rt", "util") } testCompile(project(":compiler:backend.js")) testCompile(project(":compiler:backend.wasm")) - testCompile(project(":kotlin-stdlib-js-ir")) testCompile(project(":js:js.translator")) testCompile(project(":js:js.serializer")) testCompile(project(":js:js.dce")) @@ -103,9 +102,12 @@ fun Test.setUpJsBoxTests(jsEnabled: Boolean, jsIrEnabled: Boolean) { dependsOn(":dist") if (jsEnabled) dependsOn(testJsRuntime) if (jsIrEnabled) { - dependsOn(":kotlin-stdlib-js-ir:generateFullRuntimeKLib") - dependsOn(":kotlin-stdlib-js-ir:generateReducedRuntimeKLib") - dependsOn(":kotlin-stdlib-js-ir:generateKotlinTestKLib") + dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") + systemProperty("kotlin.js.full.stdlib.path", "libraries/stdlib/js-ir/build/classes/kotlin/js/main") + dependsOn(":kotlin-stdlib-js-ir-minimal-for-test:compileKotlinJs") + systemProperty("kotlin.js.reduced.stdlib.path", "libraries/stdlib/js-ir-minimal-for-test/build/classes/kotlin/js/main") + dependsOn(":kotlin-test:kotlin-test-js-ir:compileKotlinJs") + systemProperty("kotlin.js.kotlin.test.path", "libraries/kotlin.test/js-ir/build/classes/kotlin/js/main") } exclude("org/jetbrains/kotlin/js/test/wasm/semantics/*") @@ -228,9 +230,12 @@ val unzipJsShell by task { projectTest("wasmTest", true) { dependsOn(unzipJsShell) - dependsOn(":kotlin-stdlib-js-ir:generateWasmRuntimeKLib") include("org/jetbrains/kotlin/js/test/wasm/semantics/*") val jsShellExecutablePath = File(unzipJsShell.get().destinationDir, "js").absolutePath systemProperty("javascript.engine.path.SpiderMonkey", jsShellExecutablePath) + + dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") + systemProperty("kotlin.wasm.stdlib.path", "libraries/stdlib/wasm/build/classes/kotlin/js/main") + setUpBoxTests() } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt index 55b7fab8e96..70f80bd19fd 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt @@ -21,9 +21,9 @@ import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull import java.io.File import java.lang.Boolean.getBoolean -private val fullRuntimeKlib = "libraries/stdlib/js-ir/build/fullRuntime/klib" -private val defaultRuntimeKlib = "libraries/stdlib/js-ir/build/reducedRuntime/klib" -private val kotlinTestKLib = "libraries/stdlib/js-ir/build/kotlin.test/klib" +private val fullRuntimeKlib: String = System.getProperty("kotlin.js.full.stdlib.path") +private val defaultRuntimeKlib = System.getProperty("kotlin.js.reduced.stdlib.path") +private val kotlinTestKLib = System.getProperty("kotlin.js.kotlin.test.path") abstract class BasicIrBoxTest( pathToTestDir: String, diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt index af3ddc1891e..5258988720c 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt @@ -37,7 +37,7 @@ import java.io.File import java.lang.Boolean.getBoolean private val wasmRuntimeKlib = - loadKlib("libraries/stdlib/js-ir/build/wasmRuntime/klib") + loadKlib(System.getProperty("kotlin.wasm.stdlib.path")) abstract class BasicWasmBoxTest( private val pathToTestDir: String, diff --git a/libraries/kotlin.test/js-ir/build.gradle.kts b/libraries/kotlin.test/js-ir/build.gradle.kts new file mode 100644 index 00000000000..7dc65a5b420 --- /dev/null +++ b/libraries/kotlin.test/js-ir/build.gradle.kts @@ -0,0 +1,57 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile + +plugins { + kotlin("multiplatform") +} + +val commonMainSources by task { + from( + "$rootDir/libraries/kotlin.test/common", + "$rootDir/libraries/kotlin.test/annotations-common" + ) + into("$buildDir/commonMainSources") +} + +val jsMainSources by task { + from("$rootDir/libraries/kotlin.test/js/src") + into("$buildDir/jsMainSources") +} + +kotlin { + js(IR) { + nodejs() + } + + sourceSets { + val commonMain by getting { + dependencies { + api(project(":kotlin-stdlib-js-ir")) + } + kotlin.srcDir(commonMainSources.get().destinationDir) + } + val jsMain by getting { + dependencies { + api(project(":kotlin-stdlib-js-ir")) + } + kotlin.srcDir(jsMainSources.get().destinationDir) + } + } +} + +tasks.withType>().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-Xallow-kotlin-package", + "-Xallow-result-return-type", + "-Xuse-experimental=kotlin.Experimental", + "-Xuse-experimental=kotlin.ExperimentalMultiplatform", + "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", + "-Xinline-classes" + ) +} + +tasks.named("compileKotlinJs") { + (this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin-test" + dependsOn(commonMainSources) + dependsOn(jsMainSources) +} + diff --git a/libraries/kotlin.test/js/build.gradle b/libraries/kotlin.test/js/build.gradle index eaf07572b71..035a2f64cc0 100644 --- a/libraries/kotlin.test/js/build.gradle +++ b/libraries/kotlin.test/js/build.gradle @@ -59,10 +59,11 @@ task libraryJarWithIr(type: Zip, dependsOn: libraryJarWithoutIr) { duplicatesStrategy DuplicatesStrategy.FAIL from zipTree(libraryJarWithoutIr.archiveFile) - if (rootProject.includeStdlibJsIr) { - def irKlib = tasks.getByPath(":kotlin-stdlib-js-ir:generateKotlinTestKLib") - dependsOn(irKlib) - from fileTree(irKlib.outputs.files.singleFile.path) + + dependsOn(":kotlin-test:kotlin-test-js-ir:compileKotlinJs") + from { + def irKlib = tasks.getByPath(":kotlin-test:kotlin-test-js-ir:compileKotlinJs") + fileTree(irKlib.outputs.files.first().path) } } @@ -76,7 +77,7 @@ task sourcesJar(type: Jar, dependsOn: classes) { artifacts { runtime libraryJarWithIr archives libraryJarWithIr - distLibrary libraryJarWithoutIr + distLibrary libraryJarWithIr archives sourcesJar sources sourcesJar distJs(file(compileKotlin2Js.kotlinOptions.outputFile)) { diff --git a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt index 9213a955bed..2453f2b0eee 100644 --- a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt +++ b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt @@ -65,7 +65,7 @@ abstract class AbstractJsReplTest : Closeable { configuration.put(CommonConfigurationKeys.MODULE_NAME, "repl.kts") val scriptConfiguration = ScriptCompilationConfiguration { baseClass("kotlin.Any") - dependencies.append(JsDependency("libraries/stdlib/js-ir/build/fullRuntime/klib")) + dependencies.append(JsDependency("libraries/stdlib/js-ir/build/classes/kotlin/js/main/")) platform.put("JS") } configuration.add( diff --git a/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts new file mode 100644 index 00000000000..e8fac353053 --- /dev/null +++ b/libraries/stdlib/js-ir-minimal-for-test/build.gradle.kts @@ -0,0 +1,123 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile + +plugins { + kotlin("multiplatform") +} + +kotlin { + js(IR) { + nodejs() + } +} + +val commonMainSources by task { + dependsOn(":kotlin-stdlib-js-ir:commonMainSources") + from { + val fullCommonMainSources = tasks.getByPath(":kotlin-stdlib-js-ir:commonMainSources") + exclude( + listOf( + "libraries/stdlib/unsigned/**", + "libraries/stdlib/common/src/generated/_Arrays.kt", + "libraries/stdlib/common/src/generated/_Collections.kt", + "libraries/stdlib/common/src/generated/_Comparisons.kt", + "libraries/stdlib/common/src/generated/_Maps.kt", + "libraries/stdlib/common/src/generated/_Sequences.kt", + "libraries/stdlib/common/src/generated/_Sets.kt", + "libraries/stdlib/common/src/generated/_Strings.kt", + "libraries/stdlib/common/src/generated/_UArrays.kt", + "libraries/stdlib/common/src/generated/_URanges.kt", + "libraries/stdlib/common/src/generated/_UCollections.kt", + "libraries/stdlib/common/src/generated/_UComparisons.kt", + "libraries/stdlib/common/src/generated/_USequences.kt", + "libraries/stdlib/common/src/kotlin/SequencesH.kt", + "libraries/stdlib/common/src/kotlin/TextH.kt", + "libraries/stdlib/common/src/kotlin/UMath.kt", + "libraries/stdlib/common/src/kotlin/collections/**", + "libraries/stdlib/common/src/kotlin/ioH.kt", + "libraries/stdlib/src/kotlin/collections/**", + "libraries/stdlib/src/kotlin/experimental/bitwiseOperations.kt", + "libraries/stdlib/src/kotlin/properties/Delegates.kt", + "libraries/stdlib/src/kotlin/random/URandom.kt", + "libraries/stdlib/src/kotlin/text/**", + "libraries/stdlib/src/kotlin/time/**", + "libraries/stdlib/src/kotlin/util/KotlinVersion.kt", + "libraries/stdlib/src/kotlin/util/Tuples.kt" + ) + ) + fullCommonMainSources.outputs.files.singleFile + } + + into("$buildDir/commonMainSources") +} + +val jsMainSources by task { + dependsOn(":kotlin-stdlib-js-ir:jsMainSources") + + from { + val fullJsMainSources = tasks.getByPath(":kotlin-stdlib-js-ir:jsMainSources") + exclude( + listOf( + "libraries/stdlib/js-ir/runtime/collectionsHacks.kt", + "libraries/stdlib/js-ir/src/generated/**", + "libraries/stdlib/js-ir/src/kotlin/text/**", + "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/time/**", + "libraries/stdlib/js/src/kotlin/console.kt", + "libraries/stdlib/js/src/kotlin/coreDeprecated.kt", + "libraries/stdlib/js/src/kotlin/date.kt", + "libraries/stdlib/js/src/kotlin/debug.kt", + "libraries/stdlib/js/src/kotlin/grouping.kt", + "libraries/stdlib/js/src/kotlin/json.kt", + "libraries/stdlib/js/src/kotlin/promise.kt", + "libraries/stdlib/js/src/kotlin/regexp.kt", + "libraries/stdlib/js/src/kotlin/sequence.kt", + "libraries/stdlib/js/src/kotlin/throwableExtensions.kt", + "libraries/stdlib/js/src/kotlin/text/**", + "libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt", + "libraries/stdlib/js/src/kotlin/reflect/KTypeParameterImpl.kt", + "libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt", + "libraries/stdlib/js/src/kotlin/dom/**", + "libraries/stdlib/js/src/kotlin/browser/**" + ) + ) + fullJsMainSources.outputs.files.singleFile + } + + from("$rootDir/libraries/stdlib/js-ir-minimal-for-test/src") + into("$buildDir/jsMainSources") +} + +kotlin { + sourceSets { + val commonMain by getting { + kotlin.srcDir(commonMainSources.get().destinationDir) + } + val jsMain by getting { + kotlin.srcDir(jsMainSources.get().destinationDir) + } + } +} + +tasks.withType>().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-Xallow-kotlin-package", + "-Xallow-result-return-type", + "-Xuse-experimental=kotlin.Experimental", + "-Xuse-experimental=kotlin.ExperimentalMultiplatform", + "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", + "-Xinline-classes", + "-Xopt-in=kotlin.RequiresOptIn", + "-Xopt-in=kotlin.ExperimentalUnsignedTypes", + "-Xopt-in=kotlin.ExperimentalStdlibApi" + ) +} + +tasks.named("compileKotlinJs") { + (this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin" + dependsOn(commonMainSources) + dependsOn(jsMainSources) +} diff --git a/libraries/stdlib/js-ir/smallRuntime/smallRuntimeMissingDeclarations.kt b/libraries/stdlib/js-ir-minimal-for-test/src/smallRuntimeMissingDeclarations.kt similarity index 100% rename from libraries/stdlib/js-ir/smallRuntime/smallRuntimeMissingDeclarations.kt rename to libraries/stdlib/js-ir-minimal-for-test/src/smallRuntimeMissingDeclarations.kt diff --git a/libraries/stdlib/js-ir/smallRuntime/tests.kt b/libraries/stdlib/js-ir-minimal-for-test/src/tests.kt similarity index 100% rename from libraries/stdlib/js-ir/smallRuntime/tests.kt rename to libraries/stdlib/js-ir-minimal-for-test/src/tests.kt diff --git a/libraries/stdlib/js-ir/build.gradle.kts b/libraries/stdlib/js-ir/build.gradle.kts index 703ca701f6f..21399deb4d9 100644 --- a/libraries/stdlib/js-ir/build.gradle.kts +++ b/libraries/stdlib/js-ir/build.gradle.kts @@ -1,49 +1,19 @@ -import com.moowork.gradle.node.npm.NpmTask -import com.moowork.gradle.node.task.NodeTask +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile +import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.IR plugins { - base - id("com.github.node-gradle.node") version "2.2.0" + kotlin("multiplatform") } -// A simple CLI for creating JS IR klibs. -// Does not depend on backend lowerings and JS codegen. -val jsIrKlibCli: Configuration by configurations.creating - -// Full JS IR compiler CLI -val fullJsIrCli: Configuration by configurations.creating - -dependencies { - jsIrKlibCli(project(":compiler:cli-js-klib")) - - fullJsIrCli(project(":compiler:cli-js")) - fullJsIrCli(project(":compiler:util")) - fullJsIrCli(project(":compiler:cli-common")) - fullJsIrCli(project(":compiler:cli")) - fullJsIrCli(project(":compiler:frontend")) - fullJsIrCli(project(":compiler:backend-common")) - fullJsIrCli(project(":compiler:backend")) - fullJsIrCli(project(":compiler:ir.backend.common")) - fullJsIrCli(project(":compiler:ir.serialization.js")) - fullJsIrCli(project(":compiler:backend.js")) - fullJsIrCli(project(":js:js.translator")) - fullJsIrCli(project(":js:js.serializer")) - fullJsIrCli(project(":js:js.dce")) - fullJsIrCli(project(":kotlin-reflect")) - fullJsIrCli(intellijCoreDep()) { includeJars("intellij-core") } - if (Platform[193].orLower()) { - fullJsIrCli(intellijDep()) { - includeJars("picocontainer", rootProject = rootProject) - } - } - fullJsIrCli(intellijDep()) { - includeJars("trove4j", "guava", "jdom", "asm-all", rootProject = rootProject) +kotlin { + js(IR) { + nodejs() } } val unimplementedNativeBuiltIns = - (file("$rootDir/core/builtins/native/kotlin/").list().toSortedSet() - file("$rootDir/libraries/stdlib/js-ir/builtins/").list()) - .map { "core/builtins/native/kotlin/$it" } + (file("$rootDir/core/builtins/native/kotlin/").list().toSortedSet() - file("$rootDir/libraries/stdlib/js-ir/builtins/").list()) + .map { "core/builtins/native/kotlin/$it" } // Required to compile native builtins with the rest of runtime val builtInsHeader = """@file:Suppress( @@ -55,13 +25,25 @@ val builtInsHeader = """@file:Suppress( ) """ -val fullRuntimeSources by task { - +val commonMainSources by task { val sources = listOf( - "core/builtins/src/kotlin/", "libraries/stdlib/common/src/", "libraries/stdlib/src/kotlin/", - "libraries/stdlib/unsigned/", + "libraries/stdlib/unsigned/" + ) + + sources.forEach { path -> + from("$rootDir/$path") { + into(path.dropLastWhile { it != '/' }) + } + } + + into("$buildDir/commonMainSources") +} + +val jsMainSources by task { + val sources = listOf( + "core/builtins/src/kotlin/", "libraries/stdlib/js/src/", "libraries/stdlib/js/runtime/", "libraries/stdlib/js-ir/builtins/", @@ -89,276 +71,88 @@ val fullRuntimeSources by task { } } - into("$buildDir/fullRuntime/src") + into("$buildDir/jsMainSources") doLast { unimplementedNativeBuiltIns.forEach { path -> - val file = File("$buildDir/fullRuntime/src/$path") + val file = File("$buildDir/jsMainSources/$path") val sourceCode = builtInsHeader + file.readText() file.writeText(sourceCode) } } } -val reducedRuntimeSources by task { - dependsOn(fullRuntimeSources) - - from(fullRuntimeSources.get().outputs.files.singleFile) { - exclude( - listOf( - "libraries/stdlib/unsigned/**", - "libraries/stdlib/common/src/generated/_Arrays.kt", - "libraries/stdlib/common/src/generated/_Collections.kt", - "libraries/stdlib/common/src/generated/_Comparisons.kt", - "libraries/stdlib/common/src/generated/_Maps.kt", - "libraries/stdlib/common/src/generated/_Sequences.kt", - "libraries/stdlib/common/src/generated/_Sets.kt", - "libraries/stdlib/common/src/generated/_Strings.kt", - "libraries/stdlib/common/src/generated/_UArrays.kt", - "libraries/stdlib/common/src/generated/_URanges.kt", - "libraries/stdlib/common/src/generated/_UCollections.kt", - "libraries/stdlib/common/src/generated/_UComparisons.kt", - "libraries/stdlib/common/src/generated/_USequences.kt", - "libraries/stdlib/common/src/kotlin/SequencesH.kt", - "libraries/stdlib/common/src/kotlin/TextH.kt", - "libraries/stdlib/common/src/kotlin/UMath.kt", - "libraries/stdlib/common/src/kotlin/collections/**", - "libraries/stdlib/common/src/kotlin/ioH.kt", - "libraries/stdlib/js-ir/runtime/collectionsHacks.kt", - "libraries/stdlib/js-ir/src/generated/**", - "libraries/stdlib/js-ir/src/kotlin/text/**", - "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/time/**", - "libraries/stdlib/js/src/kotlin/console.kt", - "libraries/stdlib/js/src/kotlin/coreDeprecated.kt", - "libraries/stdlib/js/src/kotlin/date.kt", - "libraries/stdlib/js/src/kotlin/debug.kt", - "libraries/stdlib/js/src/kotlin/grouping.kt", - "libraries/stdlib/js/src/kotlin/json.kt", - "libraries/stdlib/js/src/kotlin/promise.kt", - "libraries/stdlib/js/src/kotlin/regexp.kt", - "libraries/stdlib/js/src/kotlin/sequence.kt", - "libraries/stdlib/js/src/kotlin/throwableExtensions.kt", - "libraries/stdlib/js/src/kotlin/text/**", - "libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt", - "libraries/stdlib/js/src/kotlin/reflect/KTypeParameterImpl.kt", - "libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt", - "libraries/stdlib/src/kotlin/collections/**", - "libraries/stdlib/src/kotlin/experimental/bitwiseOperations.kt", - "libraries/stdlib/src/kotlin/properties/Delegates.kt", - "libraries/stdlib/src/kotlin/random/URandom.kt", - "libraries/stdlib/src/kotlin/text/**", - "libraries/stdlib/src/kotlin/time/**", - "libraries/stdlib/src/kotlin/util/KotlinVersion.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-ir/smallRuntime") { - into("libraries/stdlib/js-ir/runtime/") - } - - into("$buildDir/reducedRuntime/src") -} - -fun JavaExec.buildKLib( - moduleName: String, - sources: List, - dependencies: List, - outDir: File, - commonSources: List -) { - inputs.files(sources) - .withPathSensitivity(PathSensitivity.RELATIVE) - - outputs.dir(file(outDir)) - outputs.cacheIf { true } - - classpath = jsIrKlibCli - main = "org.jetbrains.kotlin.ir.backend.js.GenerateJsIrKlibKt" - workingDir = rootDir - args = sources.map(::pathRelativeToWorkingDir) + - listOf("-n", moduleName, "-o", pathRelativeToWorkingDir(outDir)) + - dependencies.flatMap { listOf("-d", pathRelativeToWorkingDir(it)) } + - commonSources.flatMap { listOf("-c", pathRelativeToWorkingDir(it)) } - - dependsOn(":compiler:cli-js-klib:jar") - passClasspathInJar() -} - -val fullRuntimeDir = buildDir.resolve("fullRuntime/klib") - -val generateFullRuntimeKLib by eagerTask { - dependsOn(fullRuntimeSources) - - buildKLib(moduleName = "kotlin", - sources = listOf(fullRuntimeSources.get().outputs.files.singleFile), - dependencies = emptyList(), - outDir = fullRuntimeDir, - commonSources = listOf("common", "src", "unsigned").map { file("$buildDir/fullRuntime/src/libraries/stdlib/$it") } +val commonTestSources by task { + val sources = listOf( + "libraries/stdlib/test/", + "libraries/stdlib/common/test/" ) + + sources.forEach { path -> + from("$rootDir/$path") { + into(path.dropLastWhile { it != '/' }) + } + } + + into("$buildDir/commonTestSources") +} + +val jsTestSources by task { + from("$rootDir/libraries/stdlib/js/test/") + into("$buildDir/jsTestSources") +} + +kotlin { + sourceSets { + val commonMain by getting { + kotlin.srcDir(commonMainSources.get().destinationDir) + } + val jsMain by getting { + kotlin.srcDir(jsMainSources.get().destinationDir) + } + val commonTest by getting { + dependencies { + api(project(":kotlin-test:kotlin-test-js-ir")) + } + kotlin.srcDir(commonTestSources.get().destinationDir) + } + val jsTest by getting { + dependencies { + api(project(":kotlin-test:kotlin-test-js-ir")) + } + kotlin.srcDir(jsTestSources.get().destinationDir) + } + } +} + +tasks.withType>().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-Xallow-kotlin-package", + "-Xallow-result-return-type", + "-Xuse-experimental=kotlin.Experimental", + "-Xuse-experimental=kotlin.ExperimentalMultiplatform", + "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", + "-Xinline-classes", + "-Xopt-in=kotlin.RequiresOptIn", + "-Xopt-in=kotlin.ExperimentalUnsignedTypes", + "-Xopt-in=kotlin.ExperimentalStdlibApi" + ) +} + +tasks.named("compileKotlinJs") { + (this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin" + dependsOn(commonMainSources) + dependsOn(jsMainSources) +} + +tasks.named("compileTestKotlinJs") { + dependsOn(commonTestSources) + dependsOn(jsTestSources) } val packFullRuntimeKLib by tasks.registering(Jar::class) { - dependsOn(generateFullRuntimeKLib) - from(fullRuntimeDir) + dependsOn(tasks.named("compileKotlinJs")) + from(buildDir.resolve("classes/kotlin/js/main")) destinationDirectory.set(rootProject.buildDir.resolve("js-ir-runtime")) archiveFileName.set("full-runtime.klib") -} - -val generateReducedRuntimeKLib by eagerTask { - dependsOn(reducedRuntimeSources) - - buildKLib(moduleName = "kotlin", - sources = listOf(reducedRuntimeSources.get().outputs.files.singleFile), - dependencies = emptyList(), - outDir = buildDir.resolve("reducedRuntime/klib"), - commonSources = listOf("common", "src", "unsigned").map { file("$buildDir/reducedRuntime/src/libraries/stdlib/$it") } - ) -} - -val generateWasmRuntimeKLib by eagerTask { - buildKLib(moduleName = "kotlin", - sources = listOf(file("$rootDir/libraries/stdlib/wasm")), - dependencies = emptyList(), - outDir = file("$buildDir/wasmRuntime/klib"), - commonSources = emptyList() - ) -} - -val kotlinTestCommonSources = listOf( - "$rootDir/libraries/kotlin.test/annotations-common/src/main", - "$rootDir/libraries/kotlin.test/common/src/main" -) - -val generateKotlinTestKLib by eagerTask { - dependsOn(generateFullRuntimeKLib) - - buildKLib( - moduleName = "kotlin-test", - sources = (listOf("$rootDir/libraries/kotlin.test/js/src/main") + kotlinTestCommonSources).map(::file), - dependencies = listOf(generateFullRuntimeKLib.outputs.files.singleFile), - outDir = file("$buildDir/kotlin.test/klib"), - commonSources = kotlinTestCommonSources.map(::file) - ) -} - -val jsTestDir = "${buildDir}/testSrc" - -val prepareStdlibTestSources by task { - from("$rootDir/libraries/stdlib/test") { - exclude("src/generated/**") - into("test") - } - from("$rootDir/libraries/stdlib/common/test") { - exclude("src/generated/**") - into("common") - } - from("$rootDir/libraries/stdlib/js/test") { - into("js") - } - into(jsTestDir) -} - -fun JavaExec.buildJs(sources: List, dependencies: List, outPath: String, commonSources: List) { - inputs.files(sources) - outputs.dir(file(outPath).parent) - classpath = fullJsIrCli - main = "org.jetbrains.kotlin.cli.js.K2JsIrCompiler" - workingDir = rootDir - - val libraryString: String = dependencies.joinToString(File.pathSeparator) - val libraryArgs: List = if (libraryString.isEmpty()) emptyList() else listOf("-libraries", libraryString, "-Xfriend-modules=$libraryString") - val allArgs = - sources.toList() + listOf("-output", outPath) + libraryArgs + listOf( - "-Xir-produce-js", - "-Xmulti-platform", - "-Xopt-in=kotlin.RequiresOptIn", - "-Xopt-in=kotlin.contracts.ExperimentalContracts", - "-Xopt-in=kotlin.ExperimentalMultiplatform", - "-Xopt-in=kotlin.ExperimentalStdlibApi", - "-Xopt-in=kotlin.ExperimentalUnsignedTypes" - ) - args = allArgs - - dependsOn(":compiler:cli-js:jar") - passClasspathInJar() -} - -val testOutputFile = "$buildDir/kotlin-stdlib-js-ir_test.js" - -val tryRunFullCli by eagerTask { - dependsOn(prepareStdlibTestSources) - dependsOn(generateFullRuntimeKLib) - dependsOn(generateKotlinTestKLib) - - buildJs( - sources = listOf(jsTestDir), - dependencies = listOf( - generateFullRuntimeKLib.outputs.files.singleFile.path, - generateKotlinTestKLib.outputs.files.singleFile.path - ), - outPath = testOutputFile, - commonSources = emptyList() - ) -} - -node { - download = true - version = "10.16.2" - nodeModulesDir = buildDir -} - -val installMocha by task { - setArgs(listOf("install", "mocha")) -} - -val installTeamcityReporter by task { - setArgs(listOf("install", "mocha-teamcity-reporter")) -} - -// TODO: TEST OUTPUT FILE -// val kotlinTestTestOutputFile = "${project(':kotlin-test:kotlin-test-js').buildDir}/classes/kotlin/test/kotlin-test-js-ir_test.js" - -val runMocha by task { - dependsOn(installMocha) - dependsOn(tryRunFullCli) - - script = file("${buildDir}/node_modules/mocha/bin/mocha") - - if (project.hasProperty("teamcity")) { - dependsOn(installTeamcityReporter) - setArgs( - listOf( - "--reporter", - "mocha-teamcity-reporter", - "--reporter-options", - "topLevelSuite=stdlib-js-ir" - ) - ) - } - else { - setArgs(listOf("--reporter", "min")) - } - - val allArgs = getArgs().toList() + listOf(testOutputFile/*, kotlinTestTestOutputFile*/) - setArgs(allArgs) - - setIgnoreExitValue(kotlinBuildProperties.ignoreTestFailures) - setWorkingDir(buildDir) -} - -tasks { - val test by registering { dependsOn(runMocha) } - val check by existing { dependsOn(test) } - - // dummy task to make coreLibsInstall aggregate task not fail - val install by registering } \ No newline at end of file diff --git a/libraries/stdlib/js-v1/build.gradle b/libraries/stdlib/js-v1/build.gradle index f51903e060c..496f9c62398 100644 --- a/libraries/stdlib/js-v1/build.gradle +++ b/libraries/stdlib/js-v1/build.gradle @@ -258,17 +258,16 @@ task libraryJarWithoutIr(type: Jar, dependsOn: compileJs) { } task libraryJarWithIr(type: Zip, dependsOn: libraryJarWithoutIr) { - archiveExtension = "jar" destinationDirectory = file("$buildDir/libs") duplicatesStrategy DuplicatesStrategy.FAIL from zipTree(libraryJarWithoutIr.archiveFile) - if (rootProject.includeStdlibJsIr) { - def irKlib = tasks.getByPath(":kotlin-stdlib-js-ir:generateFullRuntimeKLib") - dependsOn(irKlib) - from fileTree(irKlib.outputs.files.singleFile.path) + dependsOn(":kotlin-stdlib-js-ir:compileKotlinJs") + from { + def irKlib = tasks.getByPath(":kotlin-stdlib-js-ir:compileKotlinJs") + fileTree(irKlib.outputs.files.first().path) } } diff --git a/libraries/stdlib/wasm/build.gradle.kts b/libraries/stdlib/wasm/build.gradle.kts new file mode 100644 index 00000000000..3c05bd98dc4 --- /dev/null +++ b/libraries/stdlib/wasm/build.gradle.kts @@ -0,0 +1,37 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinCompile +import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.IR +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin + +plugins { + kotlin("multiplatform") +} + +kotlin { + js(IR) { + nodejs() + } + sourceSets { + val jsMain by getting { + kotlin.srcDirs("builtins", "internal", "runtime") + } + } +} + +tasks.withType>().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-Xallow-kotlin-package", + "-Xallow-result-return-type", + "-Xuse-experimental=kotlin.Experimental", + "-Xuse-experimental=kotlin.ExperimentalMultiplatform", + "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", + "-Xinline-classes", + "-Xopt-in=kotlin.RequiresOptIn", + "-Xopt-in=kotlin.ExperimentalUnsignedTypes", + "-Xopt-in=kotlin.ExperimentalStdlibApi" + ) +} + +tasks.named("compileKotlinJs") { + (this as KotlinCompile<*>).kotlinOptions.freeCompilerArgs += "-Xir-module-name=kotlin" +} \ No newline at end of file diff --git a/libraries/stdlib/wasm/runtime/stubsKotlinRanges.kt b/libraries/stdlib/wasm/runtime/stubsKotlinRanges.kt new file mode 100644 index 00000000000..e952b6893eb --- /dev/null +++ b/libraries/stdlib/wasm/runtime/stubsKotlinRanges.kt @@ -0,0 +1,14 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:kotlin.wasm.internal.ExcludedFromCodegen + +package kotlin.ranges + +// Stubs for unimplemented classes used by CommonBackendContext + +class CharProgression +class IntProgression +class LongProgression \ No newline at end of file diff --git a/libraries/stdlib/wasm/testHelpers.kt b/libraries/stdlib/wasm/runtime/testHelpers.kt similarity index 95% rename from libraries/stdlib/wasm/testHelpers.kt rename to libraries/stdlib/wasm/runtime/testHelpers.kt index 1f47007a791..fa2d30a86d8 100644 --- a/libraries/stdlib/wasm/testHelpers.kt +++ b/libraries/stdlib/wasm/runtime/testHelpers.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ diff --git a/libraries/stdlib/wasm/wasmAnnotations.kt b/libraries/stdlib/wasm/runtime/wasmAnnotations.kt similarity index 99% rename from libraries/stdlib/wasm/wasmAnnotations.kt rename to libraries/stdlib/wasm/runtime/wasmAnnotations.kt index c8f88a2851a..6ec72a60151 100644 --- a/libraries/stdlib/wasm/wasmAnnotations.kt +++ b/libraries/stdlib/wasm/runtime/wasmAnnotations.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ diff --git a/libraries/stdlib/wasm/stubsKotlinRanges.kt b/libraries/stdlib/wasm/stubsKotlinRanges.kt deleted file mode 100644 index f7d0dc85568..00000000000 --- a/libraries/stdlib/wasm/stubsKotlinRanges.kt +++ /dev/null @@ -1,9 +0,0 @@ -@file:kotlin.wasm.internal.ExcludedFromCodegen - -package kotlin.ranges - -// Stubs for unimplemented classes used by CommonBackendContext - -class CharProgression -class IntProgression -class LongProgression \ No newline at end of file diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JsScriptEvaluationExtension.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JsScriptEvaluationExtension.kt index 873abecc202..1242d51607b 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JsScriptEvaluationExtension.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JsScriptEvaluationExtension.kt @@ -31,7 +31,7 @@ import kotlin.script.experimental.jvm.JsDependency fun loadScriptConfiguration(configuration: CompilerConfiguration) { val scriptConfiguration = ScriptCompilationConfiguration { baseClass("kotlin.Any") - dependencies.append(JsDependency("libraries/stdlib/js-ir/build/fullRuntime/klib")) + dependencies.append(JsDependency("libraries/stdlib/js-ir/build/classes/kotlin/js/main/")) platform.put("JS") } configuration.add( diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplUtils.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplUtils.kt index 37604efead2..832994859a3 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplUtils.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplUtils.kt @@ -149,7 +149,7 @@ fun createCompileResult(lineId: LineId, code: String): ReplCompileResult.Compile class DependencyLoader { // TODO: this should be taken from CompilerConfiguration - private val commonPath = "libraries/stdlib/js-ir/build/fullRuntime/klib" + private val commonPath = "libraries/stdlib/js-ir/build/classes/kotlin/js/main/" private val mappedNamesPath = "$commonPath/mappedNames.txt" private val scriptDependencyBinaryPath = "$commonPath/scriptDependencyBinary.js" diff --git a/settings.gradle b/settings.gradle index 9e774fa603a..2c69605fde3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -108,7 +108,6 @@ include ":kotlin-build-common", ":compiler:ir.serialization.common", ":compiler:ir.serialization.jvm", ":compiler:ir.serialization.js", - ":kotlin-stdlib-js-ir", ":compiler:backend.js", ":compiler:backend.wasm", ":compiler:backend.jvm", @@ -349,6 +348,9 @@ if (buildProperties.inJpsBuildIdeaSync) { ":kotlin-stdlib-common", ":kotlin-stdlib", ":kotlin-stdlib-js", + ":kotlin-stdlib-js-ir", + ":kotlin-stdlib-js-ir-minimal-for-test", + ":kotlin-stdlib-wasm", ":kotlin-stdlib-jdk7", ":kotlin-stdlib-jdk8", ":kotlin-stdlib:samples", @@ -359,11 +361,15 @@ if (buildProperties.inJpsBuildIdeaSync) { ":include:kotlin-stdlib-common-sources", ":kotlin-test:kotlin-test-js", + ":kotlin-test:kotlin-test-js-ir", ":kotlin-test:kotlin-test-js:kotlin-test-js-it" project(':kotlin-stdlib-common').projectDir = "$rootDir/libraries/stdlib/common" as File project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File + project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File + project(':kotlin-stdlib-wasm').projectDir = "$rootDir/libraries/stdlib/wasm" as File + project(':kotlin-stdlib-js-ir-minimal-for-test').projectDir = "$rootDir/libraries/stdlib/js-ir-minimal-for-test" as File project(':kotlin-stdlib-jdk7').projectDir = "$rootDir/libraries/stdlib/jdk7" as File project(':kotlin-stdlib-jdk8').projectDir = "$rootDir/libraries/stdlib/jdk8" as File project(':kotlin-stdlib:samples').projectDir = "$rootDir/libraries/stdlib/samples" as File @@ -373,6 +379,7 @@ if (buildProperties.inJpsBuildIdeaSync) { project(':tools:kotlin-stdlib-gen').projectDir = "$rootDir/libraries/tools/kotlin-stdlib-gen" as File project(':kotlin-test:kotlin-test-js').projectDir = "$rootDir/libraries/kotlin.test/js" as File + project(':kotlin-test:kotlin-test-js-ir').projectDir = "$rootDir/libraries/kotlin.test/js-ir" as File project(':kotlin-test:kotlin-test-js:kotlin-test-js-it').projectDir = "$rootDir/libraries/kotlin.test/js/it" as File } @@ -421,7 +428,6 @@ project(':compiler:backend.jvm').projectDir = "$rootDir/compiler/ir/backend.jvm" project(':compiler:ir.serialization.common').projectDir = "$rootDir/compiler/ir/serialization.common" as File project(':compiler:ir.serialization.jvm').projectDir = "$rootDir/compiler/ir/serialization.jvm" as File project(':compiler:ir.serialization.js').projectDir = "$rootDir/compiler/ir/serialization.js" as File -project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File project(':kotlin-util-io').projectDir = "$rootDir/compiler/util-io" as File project(':kotlin-util-klib').projectDir = "$rootDir/compiler/util-klib" as File project(':kotlin-util-klib-metadata').projectDir = "$rootDir/compiler/util-klib-metadata" as File