From 60dd4754937e9bfd71bc9d41e50a2c172a9d5d8d Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Thu, 15 Jun 2017 13:29:33 +0300 Subject: [PATCH] Don't expose sourceMapSourceRoots argument to Gradle (JS) Exposing this property causes IDEA to treat it as a free command line argument, which is undesirable. Support source roots via setting command line arguments inside JS gradle task. --- .../arguments/K2JSCompilerArguments.java | 1 - .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 13 ++++++++-- .../src/main/kotlin/example/Dummy.kt | 4 +++- .../build.gradle | 24 ------------------- .../src/main/kotlin/example/main.kt | 5 ---- .../kotlin/gradle/dsl/KotlinJsOptions.kt | 6 ----- .../kotlin/gradle/dsl/KotlinJsOptionsBase.kt | 7 ------ .../kotlin/gradle/plugin/KotlinPlugin.kt | 3 --- .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 8 ++++++- 9 files changed, 21 insertions(+), 50 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.java b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.java index d4028bedc51..86288db96a5 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.java +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.java @@ -45,7 +45,6 @@ public class K2JSCompilerArguments extends CommonCompilerArguments { @Argument(value = "-source-map-prefix", description = "Prefix for paths in a source map") public String sourceMapPrefix; - @GradleOption(DefaultValues.StringNullDefault.class) @Argument( value = "-source-map-source-roots", valueDescription = "", diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index d1610755f20..c609f120bf5 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -174,7 +174,16 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() { @Test fun testKotlinJsSourceMap() { - val project = Project("kotlin2JsProjectWithSourceMap", "2.10") + val project = Project("kotlin2JsNoOutputFileProject", "2.10") + + project.setupWorkingDir() + + project.projectDir.getFileByName("build.gradle").modify { + it + "\n" + + "compileKotlin2Js.kotlinOptions.sourceMap = true\n" + + "compileKotlin2Js.kotlinOptions.sourceMapPrefix = \"prefixprefix/\"\n" + + "compileKotlin2Js.kotlinOptions.outputFile = \"\${buildDir}/kotlin2js/main/app.js\"\n" + } project.build("build") { assertSuccessful() @@ -183,7 +192,7 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() { assertFileExists(mapFilePath) val map = fileInWorkingDir(mapFilePath).readText() - val sourceFilePath = "prefixprefix/example/main.kt" + val sourceFilePath = "prefixprefix/example/Dummy.kt" assertTrue("Source map should contain reference to $sourceFilePath") { map.contains("\"$sourceFilePath\"") } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsNoOutputFileProject/src/main/kotlin/example/Dummy.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsNoOutputFileProject/src/main/kotlin/example/Dummy.kt index 770b4077865..cf5772ad7ee 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsNoOutputFileProject/src/main/kotlin/example/Dummy.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsNoOutputFileProject/src/main/kotlin/example/Dummy.kt @@ -1,6 +1,8 @@ package example class Dummy { - fun f() {} + fun f(): Int { + return 23 + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle deleted file mode 100644 index c94e3dea0f3..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -buildscript { - repositories { - mavenLocal() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -apply plugin: "kotlin2js" - -repositories { - mavenLocal() -} - -dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" -} - -compileKotlin2Js.kotlinOptions.sourceMap = true -compileKotlin2Js.kotlinOptions.sourceMapPrefix = "prefixprefix/" -compileKotlin2Js.kotlinOptions.outputFile = "${buildDir}/kotlin2js/main/app.js" -compileKotlin2Js.kotlinOptions.suppressWarnings = true -compileKotlin2Js.kotlinOptions.verbose = true diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt deleted file mode 100644 index 963a1c68032..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin2JsProjectWithSourceMap/src/main/kotlin/example/main.kt +++ /dev/null @@ -1,5 +0,0 @@ -package example - -fun main(args: Array) { - println("Hello") -} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions.kt index cad669b7df1..94e56ce516c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions.kt @@ -54,12 +54,6 @@ interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions */ var sourceMapPrefix: kotlin.String? - /** - * Base directories which are used to calculate relative paths to source files in source map - * Default value: null - */ - var sourceMapSourceRoots: kotlin.String? - /** * Generate JS files for specific ECMA version * Possible values: "v5" diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsBase.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsBase.kt index b13c41bda87..a867aeaa078 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsBase.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsOptionsBase.kt @@ -64,11 +64,6 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko get() = sourceMapPrefixField ?: null set(value) { sourceMapPrefixField = value } - private var sourceMapSourceRootsField: kotlin.String?? = null - override var sourceMapSourceRoots: kotlin.String? - get() = sourceMapSourceRootsField ?: null - set(value) { sourceMapSourceRootsField = value } - private var targetField: kotlin.String? = null override var target: kotlin.String get() = targetField ?: "v5" @@ -92,7 +87,6 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko outputFileField?.let { args.outputFile = it } sourceMapField?.let { args.sourceMap = it } sourceMapPrefixField?.let { args.sourceMapPrefix = it } - sourceMapSourceRootsField?.let { args.sourceMapSourceRoots = it } targetField?.let { args.target = it } typedArraysField?.let { args.typedArrays = it } } @@ -111,7 +105,6 @@ internal fun org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments.fil outputFile = null sourceMap = false sourceMapPrefix = null - sourceMapSourceRoots = null target = "v5" typedArrays = false } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 1b03458ea28..5054e115b71 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -210,9 +210,6 @@ internal class Kotlin2JsSourceSetProcessor( sourceSet.output.setClassesDir(outputDir) kotlinTask.destinationDir = outputDir - - kotlinTask.kotlinOptions.sourceMapSourceRoots = - sourceSet.allSource.srcDirs.joinToString(File.pathSeparator) { it.absolutePath } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 9f53973eeac..08905f98809 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.gradle.tasks import org.gradle.api.Project import org.gradle.api.Task +import org.gradle.api.file.SourceDirectorySet import org.gradle.api.logging.Logger import org.gradle.api.tasks.Input import org.gradle.api.tasks.SourceTask @@ -335,7 +336,6 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile(), val outputFile: String get() = kotlinOptions.outputFile ?: defaultOutputFile.canonicalPath - override fun findKotlinCompilerJar(project: Project): File? = findKotlinJsCompilerJar(project) @@ -379,6 +379,12 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile(), args.friendModules = friendDependency + args.sourceMapSourceRoots = source.orEmpty() + .asSequence() + .filterIsInstance() + .flatMap { it.srcDirs.asSequence() } + .joinToString(File.pathSeparator) { it.absolutePath } + logger.kotlinDebug("compiling with args ${ArgumentUtils.convertArgumentsToStringList(args)}") val messageCollector = GradleMessageCollector(logger)