1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

Generate a random .kotlin_module for each compilation.

This commit is contained in:
Cedric Beust 2015-12-18 02:27:09 +04:00
parent 3914e92f6d
commit ccbca535e8

View file

@ -16,6 +16,7 @@ import org.jetbrains.kotlin.cli.common.CLICompiler
import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.ExitCode
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
import java.io.File import java.io.File
import java.util.*
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
import kotlin.properties.Delegates import kotlin.properties.Delegates
@ -71,7 +72,8 @@ class KotlinCompiler @Inject constructor(val localRepo : LocalRepo,
* There are plenty of ways in which this method can break but this will be immediately * There are plenty of ways in which this method can break but this will be immediately
* apparent if it happens. * apparent if it happens.
*/ */
private fun invokeCompiler(cp: List<File>, allArgs: Array<String>): Boolean { private fun invokeCompiler(cp: List<File>, args: Array<String>): Boolean {
val allArgs = listOf("-module-name", "module" + Random().nextInt()) + args
log(2, "Calling kotlinc " + allArgs.joinToString(" ")) log(2, "Calling kotlinc " + allArgs.joinToString(" "))
val result : Boolean = val result : Boolean =
if (true) { if (true) {
@ -82,11 +84,11 @@ class KotlinCompiler @Inject constructor(val localRepo : LocalRepo,
}.get(0) }.get(0)
val kCompiler = classLoader.loadClass("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler") val kCompiler = classLoader.loadClass("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler")
val compilerInstance = kCompiler.newInstance() val compilerInstance = kCompiler.newInstance()
val exitCode = compilerMain.invoke(null, compilerInstance, allArgs) val exitCode = compilerMain.invoke(null, compilerInstance, allArgs.toTypedArray())
val nameMethod = exitCode.javaClass.getMethod("name") val nameMethod = exitCode.javaClass.getMethod("name")
"OK" == nameMethod.invoke(exitCode).toString() "OK" == nameMethod.invoke(exitCode).toString()
} else { } else {
val exitCode = CLICompiler.doMainNoExit(K2JVMCompiler(), allArgs) val exitCode = CLICompiler.doMainNoExit(K2JVMCompiler(), allArgs.toTypedArray())
exitCode == ExitCode.OK exitCode == ExitCode.OK
} }
return result return result