Pill: Better support for compiler arguments in generated facets
This commit is contained in:
committed by
TeamCityServer
parent
6cd25984ca
commit
f1fa17f896
@@ -269,17 +269,16 @@ class ModelParser(private val variant: Variant, private val modulePrefix: String
|
||||
method.invoke(kotlinCompileTask) as List<String>
|
||||
}
|
||||
|
||||
fun parseBoolean(name: String) = compileArguments.contains("-$name")
|
||||
fun parseString(name: String) = compileArguments.dropWhile { it != "-$name" }.drop(1).firstOrNull()
|
||||
|
||||
val extraArguments = compileArguments.filter { it.startsWith("-X") && !it.startsWith("-Xplugin=") }
|
||||
val extraArguments = getExtraArguments(compileArguments)
|
||||
|
||||
val pluginClasspath = mutableListOf<String>()
|
||||
|
||||
if (project.plugins.hasPlugin("org.jetbrains.kotlin.plugin.serialization")) {
|
||||
pluginClasspath += "\$KOTLIN_BUNDLED\$/lib/kotlinx-serialization-compiler-plugin.jar"
|
||||
}
|
||||
|
||||
fun parseBoolean(name: String) = compileArguments.contains("-$name")
|
||||
fun parseString(name: String) = compileArguments.dropWhile { it != "-$name" }.drop(1).firstOrNull()
|
||||
|
||||
return PSourceRootKotlinOptions(
|
||||
parseBoolean("no-stdlib"),
|
||||
parseBoolean("no-reflect"),
|
||||
@@ -316,6 +315,34 @@ class ModelParser(private val variant: Variant, private val modulePrefix: String
|
||||
return@map PDependency.ModuleLibrary(library)
|
||||
}
|
||||
}
|
||||
|
||||
private companion object {
|
||||
private val SKIPPED_STANDALONE_ARGUMENTS =
|
||||
listOf("-no-stdlib", "-no-reflect", "-Xfriend-paths=", "-Xbuild-file=", "-Xplugin=")
|
||||
|
||||
private val SKIPPED_ARGUMENTS_WITH_VALUE =
|
||||
listOf("-classpath", "-d", "-module-name", "-api-version", "-language-version", "-jvm-target", "-P")
|
||||
|
||||
private fun getExtraArguments(args: List<String>): List<String> {
|
||||
val result = mutableListOf<String>()
|
||||
var index = 0
|
||||
while (index < args.size) {
|
||||
val arg = args[index]
|
||||
|
||||
if (SKIPPED_STANDALONE_ARGUMENTS.any { arg.startsWith(it) }) {
|
||||
index += 1
|
||||
continue
|
||||
} else if (SKIPPED_ARGUMENTS_WITH_VALUE.any { arg.startsWith(it) }) {
|
||||
index += 2 // Skip also the value
|
||||
continue
|
||||
}
|
||||
|
||||
result += arg
|
||||
index += 1
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val SourceSet.isTestSourceSet: Boolean
|
||||
|
||||
Reference in New Issue
Block a user