Misc: Protect freeArgs with FreezableVar
This commit is contained in:
+1
-2
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.common.arguments
|
||||
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
import java.io.Serializable
|
||||
|
||||
abstract class CommonToolArguments : Freezable(), Serializable {
|
||||
@@ -24,7 +23,7 @@ abstract class CommonToolArguments : Freezable(), Serializable {
|
||||
@JvmStatic private val serialVersionUID = 0L
|
||||
}
|
||||
|
||||
var freeArgs: MutableList<String> = SmartList()
|
||||
var freeArgs: List<String> by FreezableVar(emptyList())
|
||||
|
||||
@Transient var errors: ArgumentParseErrors = ArgumentParseErrors()
|
||||
|
||||
|
||||
+7
-3
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.common.arguments
|
||||
|
||||
import com.intellij.util.SmartList
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
import kotlin.reflect.full.findAnnotation
|
||||
@@ -100,12 +100,14 @@ fun <A : CommonToolArguments> parseCommandLineArguments(args: List<String>, resu
|
||||
return argument.value == arg
|
||||
}
|
||||
|
||||
val freeArgs = ArrayList<String>()
|
||||
|
||||
var i = 0
|
||||
loop@ while (i < args.size) {
|
||||
val arg = args[i++]
|
||||
|
||||
if (freeArgsStarted) {
|
||||
result.freeArgs.add(arg)
|
||||
freeArgs.add(arg)
|
||||
continue
|
||||
}
|
||||
if (arg == FREE_ARGS_DELIMITER) {
|
||||
@@ -118,7 +120,7 @@ fun <A : CommonToolArguments> parseCommandLineArguments(args: List<String>, resu
|
||||
when {
|
||||
arg.startsWith(ADVANCED_ARGUMENT_PREFIX) -> errors.unknownExtraFlags.add(arg)
|
||||
arg.startsWith("-") -> errors.unknownArgs.add(arg)
|
||||
else -> result.freeArgs.add(arg)
|
||||
else -> freeArgs.add(arg)
|
||||
}
|
||||
continue
|
||||
}
|
||||
@@ -148,6 +150,8 @@ fun <A : CommonToolArguments> parseCommandLineArguments(args: List<String>, resu
|
||||
|
||||
updateField(property, result, value, argument.delimiter)
|
||||
}
|
||||
|
||||
result.freeArgs += freeArgs
|
||||
}
|
||||
|
||||
private fun <A : CommonToolArguments> updateField(property: KMutableProperty1<A, Any?>, result: A, value: Any, delimiter: String) {
|
||||
|
||||
Reference in New Issue
Block a user