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:
@@ -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",
|
||||
|
||||
+2
-2
@@ -6,14 +6,14 @@ There are various Kotlin APIs to JavaScript environments in the [standard librar
|
||||
|
||||
## Compiling the Kotlin Standard Library for JavaScript
|
||||
|
||||
The Kotlin Standard Library for JS is built with gradle, see the corresponding module's [ReadMe](../libraries/stdlib/js/ReadMe.md).
|
||||
The Kotlin Standard Library for JS is built with gradle, see the corresponding module's [ReadMe](../libraries/stdlib/js-v1/ReadMe.md).
|
||||
|
||||
|
||||
## Reusing JVM based test cases in JavaScript
|
||||
|
||||
Any Kotlin test cases using the **org.junit.Test** annotation and the [kotlin.test](../libraries/kotlin.test) package, such as [this test case](../libraries/stdlib/test/text/StringNumberConversionTest.kt#L16) are automatically converted to JavaScript using [QUnit](https://qunitjs.com/).
|
||||
|
||||
This allows the test cases to be [run directly in a web page in any web browser](../libraries/stdlib/js/ReadMe.md).
|
||||
This allows the test cases to be [run directly in a web page in any web browser](../libraries/stdlib/js-v1/ReadMe.md).
|
||||
|
||||
## Using the Kotlin Library in JavaScript
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@ object NashornJsTestChecker : AbstractNashornJsTestChecker() {
|
||||
class NashornIrJsTestChecker : AbstractNashornJsTestChecker() {
|
||||
override val preloadedScripts = listOf(
|
||||
BasicBoxTest.TEST_DATA_DIR_PATH + "nashorn-polyfills.js",
|
||||
"libraries/stdlib/js/src/js/polyfills.js"
|
||||
"libraries/stdlib/js-v1/src/js/polyfills.js"
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -111,14 +111,14 @@ public fun isChar(c: Any): Boolean {
|
||||
}
|
||||
|
||||
// TODO: Distinguish Boolean/Byte and Short/Char
|
||||
public fun isBooleanArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` == "BooleanArray"
|
||||
public fun isBooleanArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` === "BooleanArray"
|
||||
public fun isByteArray(a: dynamic): Boolean = js("a instanceof Int8Array").unsafeCast<Boolean>()
|
||||
public fun isShortArray(a: dynamic): Boolean = js("a instanceof Int16Array").unsafeCast<Boolean>()
|
||||
public fun isCharArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` == "CharArray"
|
||||
public fun isCharArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` === "CharArray"
|
||||
public fun isIntArray(a: dynamic): Boolean = js("a instanceof Int32Array").unsafeCast<Boolean>()
|
||||
public fun isFloatArray(a: dynamic): Boolean = js("a instanceof Float32Array").unsafeCast<Boolean>()
|
||||
public fun isDoubleArray(a: dynamic): Boolean = js("a instanceof Float64Array").unsafeCast<Boolean>()
|
||||
public fun isLongArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` == "LongArray"
|
||||
public fun isLongArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` === "LongArray"
|
||||
|
||||
|
||||
internal fun jsIn(x: String, y: dynamic): Boolean = js("x in y")
|
||||
@@ -0,0 +1,9 @@
|
||||
## Kotlin Standard Library for JS
|
||||
|
||||
This module produces a `kotlin-stdlib-js` jar which contains all the Kotlin standard kotlin library code compiled to JavaScript.
|
||||
|
||||
The tests of this module can be run and debugged inside any browser by opening the **web/index.html** file in this directory to run the test cases using [Mocha](https://mochajs.org/).
|
||||
|
||||
You should execute `installMocha` gradle task before running these tests to fetch the required Mocha dependency and `testClasses` task to compile test code.
|
||||
|
||||
These tests are also run during CI build with [Node.js plugin](https://github.com/srs/gradle-node-plugin).
|
||||
@@ -15,6 +15,7 @@ def builtinsSrcDir = "${buildDir}/builtin-sources"
|
||||
def builtinsSrcDir2 = "${buildDir}/builtin-sources-for-builtins"
|
||||
def commonSrcDir = "${projectDir}/../src/kotlin"
|
||||
def commonSrcDir2 = "${projectDir}/../common/src"
|
||||
def jsCommonDir = "${projectDir}/../js"
|
||||
def coroutinesExpJsSrcDir = "${rootDir}/libraries/stdlib/coroutines-experimental/js/src"
|
||||
|
||||
def builtinsDir = "${rootDir}/core/builtins"
|
||||
@@ -22,8 +23,12 @@ def unsignedCommonSrcDir = "${rootDir}/libraries/stdlib/unsigned/src"
|
||||
def experimentalSrcDir = "${rootDir}/libraries/stdlib/experimental"
|
||||
def experimentalJsModuleName = 'kotlin-experimental'
|
||||
def coroutinesJsModuleName = 'kotlin-stdlib-coroutines'
|
||||
|
||||
def jsSrcDir = "src"
|
||||
def jsCommonSrcDir = "${jsCommonDir}/src"
|
||||
def jsTestSrcDir = "test"
|
||||
def jsCommonTestSrcDir = "${jsCommonDir}/test"
|
||||
|
||||
def jsSrcJsDir = "${jsSrcDir}/js"
|
||||
def jsOutputFile = "${buildDir}/classes/kotlin.js"
|
||||
def jsOutputMetaFile = "${buildDir}/classes/kotlin.meta.js"
|
||||
@@ -34,11 +39,11 @@ def kotlinTestJsOutputFile = "${project(':kotlin-test:kotlin-test-js').buildDir}
|
||||
def jsTestOutputFile = "${buildDir}/classes/kotlin/test/kotlin-stdlib-js_test.js"
|
||||
def kotlinTestJsTestOutputFile = "${project(':kotlin-test:kotlin-test-js').buildDir}/classes/kotlin/test/kotlin-test-js_test.js"
|
||||
|
||||
|
||||
sourceSets {
|
||||
builtins {
|
||||
kotlin {
|
||||
srcDir builtinsSrcDir2
|
||||
srcDir "${jsCommonDir}/runtime"
|
||||
srcDir 'runtime'
|
||||
}
|
||||
}
|
||||
@@ -46,6 +51,7 @@ sourceSets {
|
||||
main {
|
||||
kotlin {
|
||||
srcDir builtinsSrcDir
|
||||
srcDir jsCommonSrcDir
|
||||
srcDir jsSrcDir
|
||||
}
|
||||
}
|
||||
@@ -60,6 +66,7 @@ sourceSets {
|
||||
test {
|
||||
kotlin {
|
||||
srcDir jsTestSrcDir
|
||||
srcDir jsCommonTestSrcDir
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +152,7 @@ compileKotlin2Js {
|
||||
sourceMap = true
|
||||
sourceMapPrefix = "./"
|
||||
freeCompilerArgs += [
|
||||
"-source-map-base-dirs", [builtinsSrcDir, jsSrcDir, commonSrcDir, commonSrcDir2, unsignedCommonSrcDir].collect { file(it).absoluteFile }.join(File.pathSeparator),
|
||||
"-source-map-base-dirs", [builtinsSrcDir, jsSrcDir, jsCommonSrcDir, commonSrcDir, commonSrcDir2, unsignedCommonSrcDir].collect { file(it).absoluteFile }.join(File.pathSeparator),
|
||||
"-Xuse-experimental=kotlin.Experimental",
|
||||
"-Xuse-experimental=kotlin.ExperimentalMultiplatform",
|
||||
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
|
||||
@@ -198,6 +205,7 @@ task compileJs(type: NoDebugJavaExec) {
|
||||
inputs.files(compileExperimentalKotlin2Js.outputs.files)
|
||||
inputs.files(compileCoroutinesExperimentalKotlin2Js.outputs.files)
|
||||
inputs.dir(jsSrcDir)
|
||||
inputs.dir(jsCommonSrcDir)
|
||||
outputs.file(jsOutputFile)
|
||||
outputs.file("${jsOutputFile}.map")
|
||||
|
||||
@@ -239,15 +247,15 @@ task compileJs(type: NoDebugJavaExec) {
|
||||
|
||||
def sourceMapBasePaths = [
|
||||
"./",
|
||||
"libraries/stdlib/js/src/js/",
|
||||
"libraries/stdlib/js/src/",
|
||||
"libraries/stdlib/js-v1/src/js/",
|
||||
"libraries/stdlib/js-v1/src/",
|
||||
]
|
||||
sourceMap.sources = sourceMap.sources.collect { sourcePath ->
|
||||
def prefixToRemove = sourceMapBasePaths.find { basePath -> sourcePath.startsWith(basePath) }
|
||||
if (prefixToRemove != null) sourcePath.substring(prefixToRemove.length()) else sourcePath
|
||||
}
|
||||
|
||||
def sourceMapSourcesBaseDirs = [jsSrcDir, jsSrcJsDir, builtinsSrcDir, commonSrcDir, commonSrcDir2, projectDir, experimentalSrcDir, unsignedCommonSrcDir]
|
||||
def sourceMapSourcesBaseDirs = [jsSrcDir, jsCommonSrcDir, jsSrcJsDir, builtinsSrcDir, commonSrcDir, commonSrcDir2, projectDir, experimentalSrcDir, unsignedCommonSrcDir]
|
||||
|
||||
sourceMap.sourcesContent = sourceMap.sources.collect { sourceName ->
|
||||
def text = sourceMapSourcesBaseDirs.collect { file("$it/$sourceName") }.find { it.exists() }?.text
|
||||
@@ -1,9 +1,5 @@
|
||||
## Kotlin Standard Library for JS
|
||||
This directory contains shared sources of Kotlin/JS Standard Library for current and IR backends.
|
||||
|
||||
This module produces a `kotlin-stdlib-js` jar which contains all the Kotlin standard kotlin library code compiled to JavaScript.
|
||||
Note that `stdlib/js/src/generated` is not shared but used exclusively for current `js-v1` backend.
|
||||
|
||||
The tests of this module can be run and debugged inside any browser by opening the **web/index.html** file in this directory to run the test cases using [Mocha](https://mochajs.org/).
|
||||
|
||||
You should execute `installMocha` gradle task before running these tests to fetch the required Mocha dependency and `testClasses` task to compile test code.
|
||||
|
||||
These tests are also run during CI build with [Node.js plugin](https://github.com/srs/gradle-node-plugin).
|
||||
Kotlin/JS Standard Library module is moved to `libraries/stdlib/js-v1`.
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package kotlin.random
|
||||
|
||||
import kotlin.math.pow
|
||||
|
||||
// TODO: use stdlib file when math.pow is fixed
|
||||
|
||||
internal actual fun defaultPlatformRandom(): Random =
|
||||
Random(js("(Math.random() * Math.pow(2, 32)) | 0").unsafeCast<Int>())
|
||||
|
||||
|
||||
internal actual fun fastLog2(value: Int): Int {
|
||||
// TODO: not so fast, make faster
|
||||
var v = value
|
||||
var log = -1
|
||||
while (v != 0) {
|
||||
v = v.ushr(1)
|
||||
log++
|
||||
}
|
||||
return log
|
||||
}
|
||||
|
||||
internal actual fun doubleFromParts(hi26: Int, low27: Int): Double =
|
||||
hi26 * (2.0.pow(-26)) + low27 * (2.0.pow(-53))
|
||||
@@ -73,7 +73,7 @@ internal object PrimitiveClasses {
|
||||
fun functionClass(arity: Int): KClassImpl<Any> {
|
||||
return functionClasses.get(arity) ?: run {
|
||||
val result = PrimitiveKClassImpl(js("Function").unsafeCast<JsClass<Any>>(), "Function$arity",
|
||||
{ jsTypeOf(it) === "function" && it.asDynamic().length == arity })
|
||||
{ jsTypeOf(it) === "function" && it.asDynamic().length === arity })
|
||||
functionClasses.asDynamic()[arity] = result
|
||||
result
|
||||
}
|
||||
|
||||
@@ -42,10 +42,10 @@ fun main(args: Array<String>) {
|
||||
when (args.size) {
|
||||
1 -> {
|
||||
val baseDir = File(args.first())
|
||||
targetBaseDirs[KotlinTarget.Common] = baseDir.resolveExistingDir("libraries/stdlib/common/src/generated")
|
||||
targetBaseDirs[KotlinTarget.Common] = baseDir.resolveExistingDir("libraries/stdlib/common/src/generated")
|
||||
targetBaseDirs[KotlinTarget.JVM] = baseDir.resolveExistingDir("libraries/stdlib/jvm/src/generated")
|
||||
targetBaseDirs[KotlinTarget.JS] = baseDir.resolveExistingDir("libraries/stdlib/js/src/generated")
|
||||
targetBaseDirs[KotlinTarget.JS_IR] = baseDir.resolveExistingDir("libraries/stdlib/js/irRuntime/generated")
|
||||
targetBaseDirs[KotlinTarget.JS_IR] = baseDir.resolveExistingDir("libraries/stdlib/js-ir/src/generated")
|
||||
}
|
||||
2 -> {
|
||||
val (targetName, targetDir) = args
|
||||
@@ -75,4 +75,4 @@ fun File.resolveExistingDir(subpath: String) = resolve(subpath).also { it.requir
|
||||
|
||||
fun File.requireExistingDir() {
|
||||
require(isDirectory) { "Directory $this doesn't exist"}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -65,11 +65,11 @@ the Kotlin IntelliJ IDEA plugin:
|
||||
- License: Apache 2 ([license/third_party/gwt_license.txt][gwt])
|
||||
- Origin: Derived from GWT, (C) 2007-08 Google Inc.
|
||||
|
||||
- Path: libraries/stdlib/js/src/js/long.js
|
||||
- Path: libraries/stdlib/js-v1/src/js/long.js
|
||||
- License: Apache 2 ([license/third_party/closure-compiler_LICENSE.txt][closure-compiler])
|
||||
- Origin: Google Closure Library, Copyright 2009 The Closure Library Authors
|
||||
|
||||
- Path: libraries/stdlib/js/src/js/polyfills.js
|
||||
- Path: libraries/stdlib/js-v1/src/js/polyfills.js
|
||||
- License: Boost Software License 1.0 ([license/third_party/boost_LICENSE.txt][boost])
|
||||
- Origin: Derived from boost special math functions, Copyright Eric Ford & Hubert Holin 2001.
|
||||
|
||||
|
||||
+1
-1
@@ -247,7 +247,7 @@ if (flags.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" as File
|
||||
project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" 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
|
||||
|
||||
Reference in New Issue
Block a user