in src/main/scala/kotlin/KotlinCompile.scala [229:259]
def parse(kotlinVersion: String, args: Object, options: List[String]): Unit = {
// TODO FIXME, this is much worse than it used to be, the parsing api has been
// deeply in flux since 1.1.x
val parser = kref.cl.loadClass(
"org.jetbrains.kotlin.cli.common.arguments.ParseCommandLineArgumentsKt")
val commonToolArguments = cl.loadClass(
"org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments")
val parseMethodName = "parseCommandLineArguments"
val stringListClass = classOf[java.util.List[java.lang.String]]
// parse method received a new argument in 1.7.0
// see https://github.com/JetBrains/kotlin/commit/683a3e74a000f959a932505592e1d68a073296cd
if (KotlinVersion(kotlinVersion) >= KotlinVersion("1.7.0")) {
val parserMethod = parser.getMethod(
parseMethodName,
stringListClass,
commonToolArguments,
classOf[Boolean]
)
// false is a default value
parserMethod.invoke(null, options.asJava, args, java.lang.Boolean.FALSE)
} else {
val parserMethod = parser.getMethod(
parseMethodName,
stringListClass,
commonToolArguments
)
parserMethod.invoke(null, options.asJava, args)
}
}