diff --git a/build.gradle.kts b/build.gradle.kts index 648e2302868..531178c371c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -55,6 +55,9 @@ pill { } val isTeamcityBuild = project.kotlinBuildProperties.isTeamcityBuild +val includeStdlibJsIr by extra( + findProperty("include.stdlib.js.ir")?.let { it.toString().toBoolean() } ?: isTeamcityBuild +) val configuredJdks: List = getConfiguredJdks().also { @@ -259,7 +262,9 @@ val coreLibProjects = listOfNotNull( ":kotlin-stdlib", ":kotlin-stdlib-common", ":kotlin-stdlib-js", - ":kotlin-stdlib-js-ir", + // 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-jdk7", ":kotlin-stdlib-jdk8", ":kotlin-test:kotlin-test-common", diff --git a/compiler/cli/cli-js-klib/build.gradle.kts b/compiler/cli/cli-js-klib/build.gradle.kts new file mode 100644 index 00000000000..f70435180c2 --- /dev/null +++ b/compiler/cli/cli-js-klib/build.gradle.kts @@ -0,0 +1,18 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +jvmTarget = "1.8" + +dependencies { + compile(project(":compiler:cli")) + compile(project(":compiler:ir.serialization.js")) + compile(project(":kotlin-reflect")) + compile(intellijDep()) { includeJars("picocontainer", "trove4j", "guava", "jdom", rootProject = rootProject) } + compile(intellijCoreDep()) { includeJars("intellij-core") } +} + +sourceSets { + "main" { projectDefault() } +} diff --git a/compiler/ir/serialization.js/test/GenerateIrRuntime.kt b/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt similarity index 93% rename from compiler/ir/serialization.js/test/GenerateIrRuntime.kt rename to compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt index 8f293616d8f..530f50822c9 100644 --- a/compiler/ir/serialization.js/test/GenerateIrRuntime.kt +++ b/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt @@ -3,15 +3,16 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +// Internal CLI for building JS IR libraries + package org.jetbrains.kotlin.ir.backend.js import com.intellij.openapi.Disposable import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.psi.PsiManager -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity -import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector -import org.jetbrains.kotlin.cli.common.messages.MessageCollector +import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys +import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.* @@ -27,6 +28,10 @@ fun buildConfiguration(environment: KotlinCoreEnvironment, moduleName: String): val runtimeConfiguration = environment.configuration.copy() runtimeConfiguration.put(CommonConfigurationKeys.MODULE_NAME, moduleName) runtimeConfiguration.put(JSConfigurationKeys.MODULE_KIND, ModuleKind.PLAIN) + runtimeConfiguration.put( + CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, + PrintingMessageCollector(System.err, MessageRenderer.PLAIN_RELATIVE_PATHS, false) + ) runtimeConfiguration.languageVersionSettings = LanguageVersionSettingsImpl( LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, @@ -95,7 +100,6 @@ private fun listOfKtFilesFrom(paths: List): List { } fun main(args: Array) { - val inputFiles = mutableListOf() var outputPath: String? = null val dependencies = mutableListOf() diff --git a/compiler/incremental-compilation-impl/build.gradle.kts b/compiler/incremental-compilation-impl/build.gradle.kts index 7296a5751ae..b76bcf79e9d 100644 --- a/compiler/incremental-compilation-impl/build.gradle.kts +++ b/compiler/incremental-compilation-impl/build.gradle.kts @@ -39,7 +39,7 @@ sourceSets { projectTest(parallel = true) { workingDir = rootDir - dependsOn(":compiler:ir.serialization.js:packFullRuntimeKLib") + dependsOn(":kotlin-stdlib-js-ir:packFullRuntimeKLib") } testsJar() diff --git a/compiler/ir/serialization.js/build.gradle.kts b/compiler/ir/serialization.js/build.gradle.kts index 2bdd3f9d063..bf3a438b718 100644 --- a/compiler/ir/serialization.js/build.gradle.kts +++ b/compiler/ir/serialization.js/build.gradle.kts @@ -26,197 +26,4 @@ sourceSets { "test" { projectDefault() } } -val unimplementedNativeBuiltIns = - (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 -val builtInsHeader = """@file:Suppress( - "NON_ABSTRACT_FUNCTION_WITH_NO_BODY", - "MUST_BE_INITIALIZED_OR_BE_ABSTRACT", - "EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE", - "PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED", - "WRONG_MODIFIER_TARGET" -) -""" - -val fullRuntimeSources by task { - - val sources = listOf( - "core/builtins/src/kotlin/", - "libraries/stdlib/common/src/", - "libraries/stdlib/src/kotlin/", - "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/**", - - // JS-specific optimized version of emptyArray() already defined - "core/builtins/src/kotlin/ArrayIntrinsics.kt" - ) - - sources.forEach { path -> - from("$rootDir/$path") { - into(path.dropLastWhile { it != '/' }) - excluded.filter { it.startsWith(path) }.forEach { - exclude(it.substring(path.length)) - } - } - } - - into("$buildDir/fullRuntime/src") - - doLast { - unimplementedNativeBuiltIns.forEach { path -> - val file = File("$buildDir/fullRuntime/src/$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/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(sources: List, dependencies: List, outPath: String, commonSources: List) { - inputs.files(sources) - outputs.dir(file(outPath).parent) - - classpath = sourceSets.test.get().runtimeClasspath - main = "org.jetbrains.kotlin.ir.backend.js.GenerateIrRuntimeKt" - workingDir = rootDir - args = sources.toList() + listOf("-o", outPath) + dependencies.flatMap { listOf("-d", it) } + commonSources.flatMap { listOf("-c", it) } - - passClasspathInJar() -} - -val fullRuntimeDir = buildDir.resolve("fullRuntime/klib") - -val generateFullRuntimeKLib by eagerTask { - dependsOn(fullRuntimeSources) - - buildKLib(sources = listOf(fullRuntimeSources.get().outputs.files.singleFile.path), - dependencies = emptyList(), - outPath = fullRuntimeDir.absolutePath, - commonSources = listOf("common", "src", "unsigned").map { "$buildDir/fullRuntime/src/libraries/stdlib/$it" } - ) -} - -val packFullRuntimeKLib by tasks.registering(Jar::class) { - dependsOn(generateFullRuntimeKLib) - from(fullRuntimeDir) - destinationDirectory.set(rootProject.buildDir.resolve("js-ir-runtime")) - archiveFileName.set("full-runtime.klib") -} - -val generateReducedRuntimeKLib by eagerTask { - dependsOn(reducedRuntimeSources) - - val outPath = buildDir.resolve("reducedRuntime/klib").absolutePath - buildKLib(sources = listOf(reducedRuntimeSources.get().outputs.files.singleFile.path), - dependencies = emptyList(), - outPath = outPath, - commonSources = listOf("common", "src", "unsigned").map { "$buildDir/reducedRuntime/src/libraries/stdlib/$it" } - ) -} - -val generateWasmRuntimeKLib by eagerTask { - buildKLib(sources = listOf("$rootDir/libraries/stdlib/wasm"), - dependencies = emptyList(), - outPath = "$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( - sources = listOf("$rootDir/libraries/kotlin.test/js/src/main") + kotlinTestCommonSources, - dependencies = listOf("${generateFullRuntimeKLib.outputs.files.singleFile.path}/klib"), - outPath = "$buildDir/kotlin.test/klib", - commonSources = kotlinTestCommonSources - ) -} - testsJar {} diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index 29f25767c62..10e94bb76e1 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -19,6 +19,8 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport import org.jetbrains.kotlin.cli.common.messages.MessageCollector +import org.jetbrains.kotlin.cli.common.messages.MessageRenderer +import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor @@ -297,8 +299,10 @@ private class ModulesStructure( val builtInsDep = allDependencies.getFullList().find { it.isBuiltIns } fun runAnalysis(): JsAnalysisResult { + // TODO: Should we not provide default message collector? val messageCollector: MessageCollector = compilerConfiguration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) ?: MessageCollector.NONE + val analyzerWithCompilerReport = AnalyzerWithCompilerReport( messageCollector, compilerConfiguration.languageVersionSettings diff --git a/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt b/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt index b5ded2f98c3..b7823868e2c 100644 --- a/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt @@ -93,7 +93,7 @@ class CodeConformanceTest : TestCase() { "libraries/tools/kotlin-source-map-loader/.gradle", "libraries/tools/kotlin-source-map-loader/lib", "buildSrc/prepare-deps/build", - "compiler/ir/serialization.js/build" + "libraries/stdlib/js-ir/build/" ) } diff --git a/js/js.tests/build.gradle.kts b/js/js.tests/build.gradle.kts index 3122fc909ee..8d200f767a9 100644 --- a/js/js.tests/build.gradle.kts +++ b/js/js.tests/build.gradle.kts @@ -30,12 +30,13 @@ dependencies { testCompileOnly(project(":compiler:frontend")) testCompileOnly(project(":compiler:cli")) testCompileOnly(project(":compiler:cli-js")) + testCompileOnly(project(":compiler:cli-js-klib")) testCompileOnly(project(":compiler:util")) testCompileOnly(intellijCoreDep()) { includeJars("intellij-core") } testCompileOnly(intellijDep()) { includeJars("openapi", "idea", "idea_rt", "util") } testCompile(project(":compiler:backend.js")) testCompile(project(":compiler:backend.wasm")) - testCompile(projectTests(":compiler:ir.serialization.js")) + testCompile(project(":kotlin-stdlib-js-ir")) testCompile(project(":js:js.translator")) testCompile(project(":js:js.serializer")) testCompile(project(":js:js.dce")) @@ -44,6 +45,15 @@ dependencies { testCompile(projectTests(":kotlin-build-common")) testCompile(projectTests(":generators:test-generator")) + testCompile(intellijCoreDep()) { includeJars("intellij-core") } + testCompile(project(":compiler:frontend")) + testCompile(project(":compiler:cli")) + testCompile(project(":compiler:util")) + + testRuntime(project(":kotlin-reflect")) + testRuntime(intellijDep()) { includeJars("picocontainer", "trove4j", "guava", "jdom", rootProject = rootProject) } + + val currentOs = OperatingSystem.current() val j2v8idString = when { @@ -85,9 +95,9 @@ fun Test.setUpJsBoxTests(jsEnabled: Boolean, jsIrEnabled: Boolean) { dependsOn(":dist") if (jsEnabled) dependsOn(testJsRuntime) if (jsIrEnabled) { - dependsOn(":compiler:ir.serialization.js:generateFullRuntimeKLib") - dependsOn(":compiler:ir.serialization.js:generateReducedRuntimeKLib") - dependsOn(":compiler:ir.serialization.js:generateKotlinTestKLib") + dependsOn(":kotlin-stdlib-js-ir:generateFullRuntimeKLib") + dependsOn(":kotlin-stdlib-js-ir:generateReducedRuntimeKLib") + dependsOn(":kotlin-stdlib-js-ir:generateKotlinTestKLib") } exclude("org/jetbrains/kotlin/js/test/wasm/semantics/*") @@ -207,7 +217,7 @@ val unzipJsShell by task { projectTest("wasmTest", true) { dependsOn(unzipJsShell) - dependsOn(":compiler:ir.serialization.js:generateWasmRuntimeKLib") + 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) 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 f5daa58e0f7..99e4482bad3 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 @@ -23,9 +23,9 @@ import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull import java.io.File import java.lang.Boolean.getBoolean -private val fullRuntimeKlib = "compiler/ir/serialization.js/build/fullRuntime/klib" -private val defaultRuntimeKlib = "compiler/ir/serialization.js/build/reducedRuntime/klib" -private val kotlinTestKLib = "compiler/ir/serialization.js/build/kotlin.test/klib" +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" 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 2392b6c5d42..1cad5bb502d 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 @@ -35,7 +35,7 @@ import java.io.File import java.lang.Boolean.getBoolean private val wasmRuntimeKlib = - loadKlib("compiler/ir/serialization.js/build/wasmRuntime/klib") + loadKlib("libraries/stdlib/js-ir/build/wasmRuntime/klib") abstract class BasicWasmBoxTest( private val pathToTestDir: String, diff --git a/libraries/kotlin.test/js/build.gradle b/libraries/kotlin.test/js/build.gradle index 892d916677f..891209eace3 100644 --- a/libraries/kotlin.test/js/build.gradle +++ b/libraries/kotlin.test/js/build.gradle @@ -7,6 +7,7 @@ configurePublishing(project) configurations { sources distJs + distLibrary } dependencies { @@ -19,7 +20,6 @@ compileKotlin2Js { kotlinOptions.freeCompilerArgs = [ "-Xallow-kotlin-package", "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", - "-Xir-produce-klib-dir" ] kotlinOptions { moduleKind = "umd" @@ -42,15 +42,39 @@ compileTestKotlin2Js { archivesBaseName = 'kotlin-test-js' jar { + enabled false +} + +task libraryJarWithoutIr(type: Jar, dependsOn: compileKotlin2Js) { + classifier = null + destinationDirectory = file("$buildDir/lib/dist") + from("$buildDir/classes/main") manifestAttributes(manifest, project, 'Test') } +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:generateKotlinTestKLib") + dependsOn(irKlib) + from fileTree("${irKlib.outputs.files.singleFile.path}/klib") + } +} + task sourcesJar(type: Jar, dependsOn: classes) { classifier = 'sources' from (sourceSets.main.allSource) } artifacts { + runtime libraryJarWithoutIr + archives libraryJarWithIr + distLibrary libraryJarWithoutIr archives sourcesJar sources sourcesJar distJs(file(compileKotlin2Js.kotlinOptions.outputFile)) { diff --git a/libraries/kotlin.test/js/it/build.gradle b/libraries/kotlin.test/js/it/build.gradle index 85a70bb8d8c..c0208eb745c 100644 --- a/libraries/kotlin.test/js/it/build.gradle +++ b/libraries/kotlin.test/js/it/build.gradle @@ -32,7 +32,11 @@ task populateNodeModules(type: Copy, dependsOn: compileKotlin2Js) { from { configurations.nodeModules.collect { - zipTree(it.absolutePath).matching { include '*.js' } + // WORKAROUND: Some JS IR jars were absent and caused this task to fail. + // They don't contain .js thus we can skip them. + if (it.exists()) { + zipTree(it.absolutePath).matching { include '*.js' } + } } } 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 68fb92e58a2..6bee2b27287 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 @@ -66,7 +66,7 @@ abstract class AbstractJsReplTest : Closeable { configuration.put(CommonConfigurationKeys.MODULE_NAME, "repl.kts") val scriptConfiguration = ScriptCompilationConfiguration { baseClass("kotlin.Any") - dependencies.append(JsDependency("compiler/ir/serialization.js/build/fullRuntime/klib")) + dependencies.append(JsDependency("libraries/stdlib/js-ir/build/fullRuntime/klib")) platform.put("JS") } configuration.add( diff --git a/libraries/stdlib/js-ir/build.gradle b/libraries/stdlib/js-ir/build.gradle deleted file mode 100644 index 0b2105adb5a..00000000000 --- a/libraries/stdlib/js-ir/build.gradle +++ /dev/null @@ -1,198 +0,0 @@ -plugins { - id "com.github.node-gradle.node" -} - -description = 'Kotlin Standard Library for JS IR' - -apply plugin: 'kotlin-platform-js' -apply plugin: 'idea' - -def originalBuiltinsDir = "${rootDir}/core/builtins" -def builtinsSrcDir = "${buildDir}/builtin-sources" -def nativeBuiltinsSrcDir = "${buildDir}/native-builtin-sources" - -// Sync native built-ins to separate directory because we don't -// need them all -- some of them are implemented as proper code in 'js-ir/builtins'. -// Also, they don't compile on its own without error suppressing. -task prepareNativeBuiltinsSources(type: Sync) { - from("${originalBuiltinsDir}/native/kotlin") { - include "Annotation.kt" - include "Any.kt" - include "Array.kt" - include "Boolean.kt" - include "CharSequence.kt" - include "Comparable.kt" - include "Coroutines.kt" - include "Iterator.kt" - include "Nothing.kt" - include "Number.kt" - include "String.kt" - } - - into nativeBuiltinsSrcDir - - doLast { - (new File(nativeBuiltinsSrcDir)).list().each { path -> - def file = new File("${nativeBuiltinsSrcDir}/${path}") - def sourceCode = """\ - @file:Suppress( - "NON_ABSTRACT_FUNCTION_WITH_NO_BODY", - "MUST_BE_INITIALIZED_OR_BE_ABSTRACT", - "EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE", - "PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED", - "WRONG_MODIFIER_TARGET" - ) - """.stripIndent() + file.getText() - file.setText(sourceCode) - } - } -} - -task prepareBuiltinsSources(type: Sync) { - from("${originalBuiltinsDir}/src/kotlin/") { - exclude "ArrayIntrinsics.kt" // Used only for JVM - } - into builtinsSrcDir -} - -def jsCommonDir = "${buildDir}/common-js-sources" - -task prepareCommonJsSources(type: Sync) { - from("${projectDir}/../js/") - exclude 'src/generated/**' // is used for legacy backend - into jsCommonDir -} - -sourceSets { - main { - kotlin { - srcDir "${projectDir}/builtins" - srcDir "${projectDir}/runtime" - srcDir "${projectDir}/src" - - srcDir "${jsCommonDir}/src" - srcDir "${jsCommonDir}/runtime" - - srcDir builtinsSrcDir - srcDir nativeBuiltinsSrcDir - } - } - test { - kotlin { - srcDir "${jsCommonDir}/test/" - } - } -} - -configurations { - commonSources -} - -dependencies { - expectedBy project(":kotlin-stdlib-common") - commonSources project(path: ":kotlin-stdlib-common", configuration: "sources") - testCompile project(':kotlin-test:kotlin-test-js') -} - - -compileKotlin2Js { - dependsOn prepareNativeBuiltinsSources - dependsOn prepareBuiltinsSources - dependsOn prepareCommonJsSources - - kotlinOptions { - outputFile = "${buildDir}/classes/main/kotlin.js" - moduleKind = "umd" - main = "noCall" - verbose = true - freeCompilerArgs += [ - "-Xir-produce-klib-dir", - "-Xir-only", - "-Xallow-kotlin-package", - "-Xallow-result-return-type", - "-Xuse-experimental=kotlin.Experimental", - "-Xuse-experimental=kotlin.ExperimentalMultiplatform", - "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", - "-Xinline-classes", - ] - } -} - -def testOutputFile = "${buildDir}/classes/kotlin/test/kotlin-stdlib-js-ir_test.js" -def kotlinTestTestOutputFile = "${project(':kotlin-test:kotlin-test-js').buildDir}/classes/kotlin/test/kotlin-test-js-ir_test.js" - -compileTestKotlin2Js { - kotlinOptions { - moduleKind = "umd" - verbose = true - outputFile = testOutputFile - freeCompilerArgs += [ - "-Xir-produce-js", - "-verbose", - "-Xuse-experimental=kotlin.Experimental", - "-Xuse-experimental=kotlin.ExperimentalUnsignedTypes", - "-Xuse-experimental=kotlin.ExperimentalStdlibApi" - ] - } -} - -archivesBaseName = 'kotlin-stdlib-js-ir' - -jar { - manifestAttributes(manifest, project, 'Main') - duplicatesStrategy = DuplicatesStrategy.FAIL -} - -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' - duplicatesStrategy = DuplicatesStrategy.FAIL - from (sourceSets.main.allSource) -} - -artifacts { - archives sourcesJar -} - -node { - download = true - version = '8.9.4' // The default 6.9.1 has buggy hyperbolic functions implementation - nodeModulesDir = buildDir -} - -task install() { - // dummy task to make coreLibsInstall aggregate task not fail -} - -task installMocha(type: NpmTask) { - args = ['install', 'mocha'] -} - -task installTeamcityReporter(type: NpmTask) { - args = ['install', 'mocha-teamcity-reporter'] -} - -task runMocha(type: NodeTask) { - dependsOn compileTestKotlin2Js - dependsOn installMocha - dependsOn ':kotlin-test:kotlin-test-js:testClasses' - - script = file("${buildDir}/node_modules/mocha/bin/mocha") - - if (project.hasProperty("teamcity")) { - dependsOn installTeamcityReporter - args = ['--reporter', 'mocha-teamcity-reporter', - '--reporter-options', 'topLevelSuite=stdlib-js-ir'] - } - else { - args = ['--reporter', 'min'] - } - - args += [testOutputFile, kotlinTestTestOutputFile] - - execOverrides { - it.ignoreExitValue = rootProject.ignoreTestFailures - it.workingDir = buildDir - } -} - -test.dependsOn runMocha diff --git a/libraries/stdlib/js-ir/build.gradle.kts b/libraries/stdlib/js-ir/build.gradle.kts new file mode 100644 index 00000000000..660811fe693 --- /dev/null +++ b/libraries/stdlib/js-ir/build.gradle.kts @@ -0,0 +1,339 @@ +import com.moowork.gradle.node.npm.NpmTask +import com.moowork.gradle.node.task.NodeTask + +plugins { + kotlin("jvm") + id("com.github.node-gradle.node") +} + +// 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(kotlin("reflect")) + fullJsIrCli(intellijCoreDep()) { includeJars("intellij-core") } + fullJsIrCli(intellijDep()) { + includeJars("picocontainer", "trove4j", "guava", "jdom", "asm-all", rootProject = rootProject) + } +} + +val unimplementedNativeBuiltIns = + (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 +val builtInsHeader = """@file:Suppress( + "NON_ABSTRACT_FUNCTION_WITH_NO_BODY", + "MUST_BE_INITIALIZED_OR_BE_ABSTRACT", + "EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE", + "PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED", + "WRONG_MODIFIER_TARGET" +) +""" + +val fullRuntimeSources by task { + + val sources = listOf( + "core/builtins/src/kotlin/", + "libraries/stdlib/common/src/", + "libraries/stdlib/src/kotlin/", + "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/**", + + // JS-specific optimized version of emptyArray() already defined + "core/builtins/src/kotlin/ArrayIntrinsics.kt" + ) + + sources.forEach { path -> + from("$rootDir/$path") { + into(path.dropLastWhile { it != '/' }) + excluded.filter { it.startsWith(path) }.forEach { + exclude(it.substring(path.length)) + } + } + } + + into("$buildDir/fullRuntime/src") + + doLast { + unimplementedNativeBuiltIns.forEach { path -> + val file = File("$buildDir/fullRuntime/src/$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/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(sources: List, dependencies: List, outPath: String, commonSources: List) { + inputs.files(sources) + outputs.dir(file(outPath).parent) + classpath = jsIrKlibCli + main = "org.jetbrains.kotlin.ir.backend.js.GenerateJsIrKlibKt" + workingDir = rootDir + args = sources.toList() + listOf("-o", outPath) + dependencies.flatMap { listOf("-d", it) } + commonSources.flatMap { listOf("-c", it) } + + dependsOn(":compiler:cli-js-klib:jar") + passClasspathInJar() +} + +val fullRuntimeDir = buildDir.resolve("fullRuntime/klib") + +val generateFullRuntimeKLib by eagerTask { + dependsOn(fullRuntimeSources) + + buildKLib(sources = listOf(fullRuntimeSources.get().outputs.files.singleFile.path), + dependencies = emptyList(), + outPath = fullRuntimeDir.absolutePath, + commonSources = listOf("common", "src", "unsigned").map { "$buildDir/fullRuntime/src/libraries/stdlib/$it" } + ) +} + +val packFullRuntimeKLib by tasks.registering(Jar::class) { + dependsOn(generateFullRuntimeKLib) + from(fullRuntimeDir) + destinationDirectory.set(rootProject.buildDir.resolve("js-ir-runtime")) + archiveFileName.set("full-runtime.klib") +} + +val generateReducedRuntimeKLib by eagerTask { + dependsOn(reducedRuntimeSources) + + val outPath = buildDir.resolve("reducedRuntime/klib").absolutePath + buildKLib(sources = listOf(reducedRuntimeSources.get().outputs.files.singleFile.path), + dependencies = emptyList(), + outPath = outPath, + commonSources = listOf("common", "src", "unsigned").map { "$buildDir/reducedRuntime/src/libraries/stdlib/$it" } + ) +} + +val generateWasmRuntimeKLib by eagerTask { + buildKLib(sources = listOf("$rootDir/libraries/stdlib/wasm"), + dependencies = emptyList(), + outPath = "$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( + sources = listOf("$rootDir/libraries/kotlin.test/js/src/main") + kotlinTestCommonSources, + dependencies = listOf("${generateFullRuntimeKLib.outputs.files.singleFile.path}/klib"), + outPath = "$buildDir/kotlin.test/klib", + commonSources = kotlinTestCommonSources + ) +} + +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", + "-Xuse-experimental=kotlin.Experimental", + "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", + "-Xuse-experimental=kotlin.ExperimentalMultiplatform", + "-Xuse-experimental=kotlin.ExperimentalStdlibApi", + "-Xuse-experimental=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}/klib", + "${generateKotlinTestKLib.outputs.files.singleFile.path}/klib" + ), + 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(rootProject.getBooleanProperty("ignoreTestFailures") ?: false) + setWorkingDir(buildDir) +} + +tasks { + test { + dependsOn(runMocha) + } +} \ No newline at end of file diff --git a/libraries/stdlib/js-v1/build.gradle b/libraries/stdlib/js-v1/build.gradle index ad1c571a9ea..c5695da6647 100644 --- a/libraries/stdlib/js-v1/build.gradle +++ b/libraries/stdlib/js-v1/build.gradle @@ -310,8 +310,6 @@ task libraryJarWithoutIr(type: Jar, dependsOn: compileJs) { } task libraryJarWithIr(type: Zip, dependsOn: libraryJarWithoutIr) { - def irStdlibJar = tasks.getByPath(":kotlin-stdlib-js-ir:jar") - dependsOn(irStdlibJar) archiveExtension = "jar" destinationDirectory = file("$buildDir/libs") @@ -319,8 +317,10 @@ task libraryJarWithIr(type: Zip, dependsOn: libraryJarWithoutIr) { duplicatesStrategy DuplicatesStrategy.FAIL from zipTree(libraryJarWithoutIr.archiveFile) - from(zipTree(irStdlibJar.archiveFile)) { - exclude 'META-INF/*' + if (rootProject.includeStdlibJsIr) { + def irKlib = tasks.getByPath(":kotlin-stdlib-js-ir:generateFullRuntimeKLib") + dependsOn(irKlib) + from fileTree("${irKlib.outputs.files.singleFile.path}/klib") } } @@ -370,7 +370,7 @@ task distSourcesJar(type: Jar) { artifacts { - runtime libraryJarWithIr + runtime libraryJarWithoutIr archives libraryJarWithIr archives sourcesJar sources sourcesJar 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 5f3f94e989e..873abecc202 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("compiler/ir/serialization.js/build/fullRuntime/klib")) + dependencies.append(JsDependency("libraries/stdlib/js-ir/build/fullRuntime/klib")) 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 128db750cb8..77ac04ef37e 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 @@ -147,7 +147,7 @@ fun createCompileResult(lineId: LineId, code: String): ReplCompileResult.Compile class DependencyLoader { // TODO: this should be taken from CompilerConfiguration - private val commonPath = "compiler/ir/serialization.js/build/fullRuntime/klib" + private val commonPath = "libraries/stdlib/js-ir/build/fullRuntime/klib" private val mappedNamesPath = "$commonPath/mappedNames.txt" private val scriptDependencyBinaryPath = "$commonPath/scriptDependencyBinary.js" diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index b83ea368a49..589c6a0f896 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -90,7 +90,6 @@ val distLibraryProjects = listOfNotNull( ":js:js.engines", ":kotlin-stdlib-js-ir".takeIf { kotlinBuildProperties.jsIrDist }, ":kotlin-source-sections-compiler-plugin", - ":kotlin-test:kotlin-test-js".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, ":kotlin-test:kotlin-test-junit", ":kotlin-test:kotlin-test-junit5", ":kotlin-test:kotlin-test-jvm", @@ -149,6 +148,7 @@ dependencies { libraries(kotlinStdlib("jdk8")) if (!kotlinBuildProperties.isInJpsBuildIdeaSync) { libraries(kotlinStdlib("js", "distLibrary")) + libraries(project(":kotlin-test:kotlin-test-js", configuration = "distLibrary")) } distLibraryProjects.forEach { diff --git a/settings.gradle b/settings.gradle index fc15be72bc0..ff3b3558400 100644 --- a/settings.gradle +++ b/settings.gradle @@ -102,6 +102,7 @@ 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", @@ -111,6 +112,7 @@ include ":kotlin-build-common", ":compiler:light-classes", ":compiler:cli", ":compiler:cli-js", + ":compiler:cli-js-klib", ":compiler:incremental-compilation-impl", ":compiler:android-tests", ":compiler:tests-common", @@ -322,7 +324,6 @@ if (buildProperties.inJpsBuildIdeaSync) { ":kotlin-stdlib-common", ":kotlin-stdlib", ":kotlin-stdlib-js", - ":kotlin-stdlib-js-ir", ":kotlin-stdlib-jdk7", ":kotlin-stdlib-jdk8", ":kotlin-stdlib:samples", @@ -338,7 +339,6 @@ if (buildProperties.inJpsBuildIdeaSync) { 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-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 @@ -375,6 +375,7 @@ project(':kotlin-preloader').projectDir = "$rootDir/compiler/preloader" as File project(':kotlin-build-common').projectDir = "$rootDir/build-common" as File project(':compiler:cli-common').projectDir = "$rootDir/compiler/cli/cli-common" as File project(':compiler:cli-js').projectDir = "$rootDir/compiler/cli/cli-js" as File +project(':compiler:cli-js-klib').projectDir = "$rootDir/compiler/cli/cli-js-klib" as File project(':kotlin-runner').projectDir = "$rootDir/compiler/cli/cli-runner" as File project(':kotlin-daemon').projectDir = "$rootDir/compiler/daemon" as File project(':daemon-common').projectDir = "$rootDir/compiler/daemon/daemon-common" as File @@ -393,6 +394,7 @@ 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