def parse()

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)
    }
  }