From 7438d12ad7d6afac4afc523324a9c61eb834ff37 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 26 Apr 2018 00:07:17 +0300 Subject: [PATCH] Move builtins generators to their own source set Make them depend on bootstrap stdlib. This is to prevent recompiling the entire project when we need just to generate builtins sources. --- buildSrc/src/main/kotlin/CommonUtil.kt | 5 ++-- generators/build.gradle.kts | 18 ++++++++++---- generators/build.gradle.kts.as31 | 18 ++++++++++---- generators/build.gradle.kts.as32 | 18 ++++++++++---- .../builtins/arrayIterators.kt | 0 .../kotlin/generators => }/builtins/arrays.kt | 0 .../kotlin/generators => }/builtins/common.kt | 0 .../generators => }/builtins/functions.kt | 0 .../builtins/generateBuiltIns.kt | 0 .../generators => }/builtins/iterators.kt | 0 .../generators => }/builtins/primitives.kt | 24 +++++-------------- .../builtins/progressionIterators.kt | 0 .../generators => }/builtins/progressions.kt | 0 .../kotlin/generators => }/builtins/ranges.kt | 0 14 files changed, 51 insertions(+), 32 deletions(-) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/arrayIterators.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/arrays.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/common.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/functions.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/generateBuiltIns.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/iterators.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/primitives.kt (91%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/progressionIterators.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/progressions.kt (100%) rename generators/{tests/org/jetbrains/kotlin/generators => }/builtins/ranges.kt (100%) diff --git a/buildSrc/src/main/kotlin/CommonUtil.kt b/buildSrc/src/main/kotlin/CommonUtil.kt index 7236b8287ec..44a6c2607ec 100644 --- a/buildSrc/src/main/kotlin/CommonUtil.kt +++ b/buildSrc/src/main/kotlin/CommonUtil.kt @@ -7,6 +7,7 @@ import org.gradle.api.file.CopySourceSpec import org.gradle.api.file.SourceDirectorySet import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.JavaExec +import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSetOutput import org.gradle.kotlin.dsl.creating import org.gradle.kotlin.dsl.extra @@ -52,8 +53,8 @@ var Project.javaHome: String? get() = extra.takeIf { it.has("javaHome") }?.get("javaHome") as? String set(v) { extra["javaHome"] = v } -fun Project.generator(fqName: String) = smartJavaExec { - classpath = the().sourceSets["test"].runtimeClasspath +fun Project.generator(fqName: String, sourceSet: SourceSet? = null) = smartJavaExec { + classpath = (sourceSet ?: the().sourceSets["test"]).runtimeClasspath main = fqName workingDir = rootDir } diff --git a/generators/build.gradle.kts b/generators/build.gradle.kts index b6ff576fbe0..23ef9f7448f 100644 --- a/generators/build.gradle.kts +++ b/generators/build.gradle.kts @@ -4,6 +4,16 @@ plugins { id("jps-compatible") } +sourceSets { + "main" { } + "test" { projectDefault() } +} + +val builtinsSourceSet = the().sourceSets.create("builtins") { + java.srcDir("builtins") +} +val builtinsCompile by configurations + dependencies { compile(projectTests(":compiler:cli")) compile(projectTests(":idea:idea-maven")) @@ -18,17 +28,15 @@ dependencies { compile(projectTests(":kotlin-noarg-compiler-plugin")) compile(projectTests(":kotlin-sam-with-receiver-compiler-plugin")) compile(projectTests(":generators:test-generator")) + builtinsCompile("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion") testCompileOnly(intellijDep("jps-build-test")) testCompileOnly(project(":kotlin-reflect-api")) testCompile(intellijDep("jps-build-test")) + testCompile(builtinsSourceSet.output) testRuntime(intellijDep()) { includeJars("idea_rt") } testRuntime(projectDist(":kotlin-reflect")) } -sourceSets { - "main" { } - "test" { projectDefault() } -} projectTest { workingDir = rootDir @@ -41,4 +49,6 @@ val generateProtoBufCompare by generator("org.jetbrains.kotlin.generators.protob val generateGradleOptions by generator("org.jetbrains.kotlin.generators.arguments.GenerateGradleOptionsKt") +val generateBuiltins by generator("org.jetbrains.kotlin.generators.builtins.generateBuiltIns.GenerateBuiltInsKt", builtinsSourceSet) + testsJar() diff --git a/generators/build.gradle.kts.as31 b/generators/build.gradle.kts.as31 index bd432828ebf..858194a70b9 100644 --- a/generators/build.gradle.kts.as31 +++ b/generators/build.gradle.kts.as31 @@ -4,6 +4,16 @@ plugins { id("jps-compatible") } +sourceSets { + "main" { } + "test" { projectDefault() } +} + +val builtinsSourceSet = the().sourceSets.create("builtins") { + java.srcDir("builtins") +} +val builtinsCompile by configurations + dependencies { compile(projectTests(":compiler:cli")) compile(projectTests(":idea:idea-maven")) @@ -18,16 +28,14 @@ dependencies { compile(projectTests(":kotlin-noarg-compiler-plugin")) compile(projectTests(":kotlin-sam-with-receiver-compiler-plugin")) compile(projectTests(":generators:test-generator")) + builtinsCompile("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion") // testCompileOnly(intellijDep("jps-build-test")) testCompileOnly(project(":kotlin-reflect-api")) + testCompile(builtinsSourceSet.output) testRuntime(intellijDep()) { includeJars("idea_rt") } testRuntime(projectDist(":kotlin-reflect")) } -sourceSets { - "main" { } - "test" { projectDefault() } -} projectTest { workingDir = rootDir @@ -40,4 +48,6 @@ val generateProtoBufCompare by generator("org.jetbrains.kotlin.generators.protob val generateGradleOptions by generator("org.jetbrains.kotlin.generators.arguments.GenerateGradleOptionsKt") +val generateBuiltins by generator("org.jetbrains.kotlin.generators.builtins.generateBuiltIns.GenerateBuiltInsKt", builtinsSourceSet) + testsJar() diff --git a/generators/build.gradle.kts.as32 b/generators/build.gradle.kts.as32 index bd432828ebf..1bf783035b2 100644 --- a/generators/build.gradle.kts.as32 +++ b/generators/build.gradle.kts.as32 @@ -4,6 +4,16 @@ plugins { id("jps-compatible") } +sourceSets { + "main" { } + "test" { projectDefault() } +} + +val builtinsSourceSet = the().sourceSets.create("builtins") { + java.srcDir("builtins") +} +val builtinsCompile by configurations + dependencies { compile(projectTests(":compiler:cli")) compile(projectTests(":idea:idea-maven")) @@ -19,15 +29,13 @@ dependencies { compile(projectTests(":kotlin-sam-with-receiver-compiler-plugin")) compile(projectTests(":generators:test-generator")) // testCompileOnly(intellijDep("jps-build-test")) + builtinsCompile("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion") testCompileOnly(project(":kotlin-reflect-api")) + testCompile(builtinsSourceSet.output) testRuntime(intellijDep()) { includeJars("idea_rt") } testRuntime(projectDist(":kotlin-reflect")) } -sourceSets { - "main" { } - "test" { projectDefault() } -} projectTest { workingDir = rootDir @@ -40,4 +48,6 @@ val generateProtoBufCompare by generator("org.jetbrains.kotlin.generators.protob val generateGradleOptions by generator("org.jetbrains.kotlin.generators.arguments.GenerateGradleOptionsKt") +val generateBuiltins by generator("org.jetbrains.kotlin.generators.builtins.generateBuiltIns.GenerateBuiltInsKt", builtinsSourceSet) + testsJar() diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/arrayIterators.kt b/generators/builtins/arrayIterators.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/arrayIterators.kt rename to generators/builtins/arrayIterators.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/arrays.kt b/generators/builtins/arrays.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/arrays.kt rename to generators/builtins/arrays.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/common.kt b/generators/builtins/common.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/common.kt rename to generators/builtins/common.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/functions.kt b/generators/builtins/functions.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/functions.kt rename to generators/builtins/functions.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/generateBuiltIns.kt b/generators/builtins/generateBuiltIns.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/generateBuiltIns.kt rename to generators/builtins/generateBuiltIns.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/iterators.kt b/generators/builtins/iterators.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/iterators.kt rename to generators/builtins/iterators.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/primitives.kt b/generators/builtins/primitives.kt similarity index 91% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/primitives.kt rename to generators/builtins/primitives.kt index ae5346000e0..1b69eb80049 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/builtins/primitives.kt +++ b/generators/builtins/primitives.kt @@ -1,24 +1,12 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * 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 org.jetbrains.kotlin.generators.builtins.ranges import org.jetbrains.kotlin.generators.builtins.PrimitiveType import org.jetbrains.kotlin.generators.builtins.generateBuiltIns.BuiltInsSourceGenerator -import org.jetbrains.kotlin.util.OperatorNameConventions import java.io.PrintWriter class GeneratePrimitives(out: PrintWriter) : BuiltInsSourceGenerator(out) { @@ -43,7 +31,7 @@ class GeneratePrimitives(out: PrintWriter) : BuiltInsSourceGenerator(out) { "and" to "Performs a bitwise AND operation between the two values.", "or" to "Performs a bitwise OR operation between the two values.", "xor" to "Performs a bitwise XOR operation between the two values.") - private val typeDescriptions: Map = hashMapOf( + private val typeDescriptions: Map = mapOf( PrimitiveType.DOUBLE to "double-precision 64-bit IEEE 754 floating point number", PrimitiveType.FLOAT to "single-precision 32-bit IEEE 754 floating point number", PrimitiveType.LONG to "64-bit signed integer", @@ -57,7 +45,7 @@ class GeneratePrimitives(out: PrintWriter) : BuiltInsSourceGenerator(out) { PrimitiveType.INT -> listOf(java.lang.Integer.MIN_VALUE, java.lang.Integer.MAX_VALUE) PrimitiveType.BYTE -> listOf(java.lang.Byte.MIN_VALUE, java.lang.Byte.MAX_VALUE) PrimitiveType.SHORT -> listOf(java.lang.Short.MIN_VALUE, java.lang.Short.MAX_VALUE) - PrimitiveType.LONG ->listOf((java.lang.Long.MIN_VALUE + 1).toString() + "L - 1L", java.lang.Long.MAX_VALUE.toString() + "L") + PrimitiveType.LONG -> listOf((java.lang.Long.MIN_VALUE + 1).toString() + "L - 1L", java.lang.Long.MAX_VALUE.toString() + "L") // PrimitiveType.DOUBLE -> listOf(java.lang.Double.MIN_VALUE, java.lang.Double.MAX_VALUE, "1.0/0.0", "-1.0/0.0", "0.0/0.0") // PrimitiveType.FLOAT -> listOf(java.lang.Float.MIN_VALUE, java.lang.Float.MAX_VALUE, "1.0F/0.0F", "-1.0F/0.0F", "0.0F/0.0F").map { it as? String ?: "${it}F" } else -> throw IllegalArgumentException("type: $type") @@ -167,10 +155,10 @@ class GeneratePrimitives(out: PrintWriter) : BuiltInsSourceGenerator(out) { out.println(" /** $doc */") when (name) { - OperatorNameConventions.REM.asString() -> + "rem" -> out.println(" @SinceKotlin(\"1.1\")") - OperatorNameConventions.MOD.asString() -> + "mod" -> out.println(" @Deprecated(\"Use rem(other) instead\", ReplaceWith(\"rem(other)\"), DeprecationLevel.WARNING)") } out.println(" public operator fun $name(other: ${otherKind.capitalized}): ${returnType.capitalized}") diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/progressionIterators.kt b/generators/builtins/progressionIterators.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/progressionIterators.kt rename to generators/builtins/progressionIterators.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/progressions.kt b/generators/builtins/progressions.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/progressions.kt rename to generators/builtins/progressions.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/builtins/ranges.kt b/generators/builtins/ranges.kt similarity index 100% rename from generators/tests/org/jetbrains/kotlin/generators/builtins/ranges.kt rename to generators/builtins/ranges.kt