From 31e762c679c8c168abf9161eeecf5fdd69ea1610 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 12 Feb 2018 19:09:37 +0100 Subject: [PATCH] Move 1.3-specific part of stdlib to another source set --- libraries/stdlib/build.gradle | 21 ++++++++++++ .../kotlin/annotations/Experimental.kt | 0 libraries/stdlib/js/build.gradle | 33 +++++++++++++++++-- .../reference-public-api/kotlin-stdlib.txt | 24 -------------- .../RuntimePublicAPITest.kt | 6 +++- 5 files changed, 56 insertions(+), 28 deletions(-) rename libraries/stdlib/{src => experimental}/kotlin/annotations/Experimental.kt (100%) diff --git a/libraries/stdlib/build.gradle b/libraries/stdlib/build.gradle index 55868a87bec..2c1ed424a9d 100644 --- a/libraries/stdlib/build.gradle +++ b/libraries/stdlib/build.gradle @@ -35,6 +35,11 @@ sourceSets { srcDir 'src' } } + experimental { + kotlin { + srcDir "experimental" + } + } test { kotlin { srcDir 'test' @@ -64,6 +69,7 @@ jar { manifestAttributes(manifest, project, 'Main') from("${rootDir}/dist/builtins") from sourceSets.builtins.output + from sourceSets.experimental.output } task distJar(type: Jar) { @@ -74,6 +80,7 @@ task distJar(type: Jar) { from sourceSets.annotations.output from sourceSets.builtins.output from sourceSets.main.output + from sourceSets.experimental.output } task builtinsJar(type: Jar) { @@ -142,4 +149,18 @@ compileKotlin { } } +compileExperimentalKotlin { + kotlinOptions { + languageVersion = "1.3" + apiVersion = "1.3" + freeCompilerArgs = [ + "-version", + "-Xallow-kotlin-package", + "-Xmultifile-parts-inherit", + "-Xdump-declarations-to=${buildDir}/stdlib-experimental-declarations.json", + "-module-name", "kotlin-stdlib-experimental" + ] + } +} + kotlin.experimental.coroutines 'enable' diff --git a/libraries/stdlib/src/kotlin/annotations/Experimental.kt b/libraries/stdlib/experimental/kotlin/annotations/Experimental.kt similarity index 100% rename from libraries/stdlib/src/kotlin/annotations/Experimental.kt rename to libraries/stdlib/experimental/kotlin/annotations/Experimental.kt diff --git a/libraries/stdlib/js/build.gradle b/libraries/stdlib/js/build.gradle index d7d366f619a..cb9f4173303 100644 --- a/libraries/stdlib/js/build.gradle +++ b/libraries/stdlib/js/build.gradle @@ -16,6 +16,7 @@ def builtinsSrcDir2 = "${buildDir}/builtin-sources-for-builtins" def commonSrcDir = "${buildDir}/common-sources" def commonTestSrcDir = "${buildDir}/common-test-sources" def builtinsDir = "${rootDir}/core/builtins" +def experimentalSrcDir = "${rootDir}/libraries/stdlib/experimental" def jsLibrariesDir = "${rootDir}/js/js.libraries" def jsSrcDir = "${jsLibrariesDir}/src" def jsTestSrcDir = "${jsLibrariesDir}/test" @@ -46,6 +47,12 @@ sourceSets { } } + experimental { + kotlin { + srcDir experimentalSrcDir + } + } + test { kotlin { srcDir commonTestSrcDir @@ -140,6 +147,18 @@ compileKotlin2Js { } } +compileExperimentalKotlin2Js { + dependsOn compileKotlin2Js + kotlinOptions { + languageVersion = "1.3" + apiVersion = "1.3" + outputFile = "${buildDir}/classes/main/kotlin-experimental.js" + sourceMap = true + sourceMapPrefix = "./" + freeCompilerArgs += [ "-source-map-base-dirs", [experimentalSrcDir].join(File.pathSeparator) ] + } +} + compileTestKotlin2Js { dependsOn preprocessSourcesTest kotlinOptions { @@ -148,21 +167,26 @@ compileTestKotlin2Js { } task compileJs(type: JavaExec) { - dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js + dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js, compileExperimentalKotlin2Js inputs.files(compileBuiltinsKotlin2Js.outputs.files) inputs.files(compileKotlin2Js.outputs.files) + inputs.files(compileExperimentalKotlin2Js.outputs.files) inputs.dir(jsSrcDir) outputs.file(jsOutputFile) outputs.file("${jsOutputFile}.map") - def inputFiles = fileTree("${jsSrcJsDir}") { + def inputFiles = fileTree(jsSrcJsDir) { include '**/*.js' } main = "org.jetbrains.kotlin.js.FileMergerKt" doFirst { args = [jsOutputFile, rootDir, "$jsSrcDir/wrapper.js"] + inputFiles.collect { it.path } + - ["$buildDir/classes/builtins/kotlin.js", "$buildDir/classes/main/kotlin.js"] + (compileBuiltinsKotlin2Js.outputs.files.collect { it.path } + + compileKotlin2Js.outputs.files.collect { it.path } + + compileExperimentalKotlin2Js.outputs.files.collect { it.path }).findAll { + it.endsWith(".js") && !it.endsWith(".meta.js") + } } classpath = configurations.merger @@ -241,6 +265,9 @@ task sourcesJar(type: Jar, dependsOn: classes) { exclude '**/*.java' exclude 'js/**' } + from (sourceSets.experimental.allSource) { + into 'kotlin' + } } diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt index 2ae9c56e4f5..445b7b58177 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt @@ -3,26 +3,6 @@ public final class kotlin/ExceptionsKt { public static final fun getStackTrace (Ljava/lang/Throwable;)[Ljava/lang/StackTraceElement; } -public abstract interface annotation class kotlin/Experimental : java/lang/annotation/Annotation { - public abstract fun changesMayBreak ()[Lkotlin/Experimental$Impact; - public abstract fun level ()Lkotlin/Experimental$Level; -} - -public final class kotlin/Experimental$Impact : java/lang/Enum { - public static final field COMPILATION Lkotlin/Experimental$Impact; - public static final field LINKAGE Lkotlin/Experimental$Impact; - public static final field RUNTIME Lkotlin/Experimental$Impact; - public static fun valueOf (Ljava/lang/String;)Lkotlin/Experimental$Impact; - public static fun values ()[Lkotlin/Experimental$Impact; -} - -public final class kotlin/Experimental$Level : java/lang/Enum { - public static final field ERROR Lkotlin/Experimental$Level; - public static final field WARNING Lkotlin/Experimental$Level; - public static fun valueOf (Ljava/lang/String;)Lkotlin/Experimental$Level; - public static fun values ()[Lkotlin/Experimental$Level; -} - public final class kotlin/KotlinVersion : java/lang/Comparable { public static final field CURRENT Lkotlin/KotlinVersion; public static final field Companion Lkotlin/KotlinVersion$Companion; @@ -104,10 +84,6 @@ public final class kotlin/TuplesKt { public static final fun toList (Lkotlin/Triple;)Ljava/util/List; } -public abstract interface annotation class kotlin/UseExperimental : java/lang/annotation/Annotation { - public abstract fun markerClass ()[Ljava/lang/Class; -} - public final class kotlin/_Assertions { public static final field INSTANCE Lkotlin/_Assertions; } diff --git a/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt b/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt index 3975fd37942..4972289e974 100644 --- a/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt +++ b/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt @@ -38,7 +38,11 @@ class RuntimePublicAPITest { } @Test fun kotlinStdlibRuntimeMerged() { - snapshotAPIAndCompare("../../stdlib/build/libs", "kotlin-stdlib", listOf("../stdlib-declarations.json", "../runtime-declarations.json"), listOf("kotlin.jvm.internal")) + snapshotAPIAndCompare( + "../../stdlib/build/libs", "kotlin-stdlib", + listOf("../stdlib-declarations.json", "../runtime-declarations.json", "../stdlib-experimental-declarations.json"), + listOf("kotlin.jvm.internal") + ) } @Test fun kotlinStdlibJdk7() {