From d32e101802d2db897ceacac3b41bbdbaa2ac8c3a Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 13 Sep 2017 20:04:07 +0300 Subject: [PATCH] Support deprecatedName for advanced CLI arguments --- .../arguments/parseCommandLineArguments.kt | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt index b5493789de4..798fac15018 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt @@ -71,20 +71,33 @@ fun parseCommandLineArguments(args: List, resu var freeArgsStarted = false fun ArgumentField.matches(arg: String): Boolean { - if (argument.deprecatedName.takeUnless(String::isEmpty) == arg) { - errors.deprecatedArguments[argument.deprecatedName] = argument.value + if (argument.shortName.takeUnless(String::isEmpty) == arg) { return true } - if (argument.value == arg) { - if (argument.isAdvanced && property.returnType.classifier != Boolean::class) { - errors.extraArgumentsPassedInObsoleteForm.add(arg) + val deprecatedName = argument.deprecatedName.takeUnless(String::isEmpty) + if (deprecatedName == arg) { + errors.deprecatedArguments[deprecatedName] = argument.value + return true + } + + if (argument.isAdvanced) { + if (argument.value == arg) { + if (property.returnType.classifier != Boolean::class) { + errors.extraArgumentsPassedInObsoleteForm.add(arg) + } + return true } - return true + + if (deprecatedName != null && arg.startsWith(deprecatedName + "=")) { + errors.deprecatedArguments[deprecatedName] = argument.value + return true + } + + return arg.startsWith(argument.value + "=") } - return argument.shortName.takeUnless(String::isEmpty) == arg || - (argument.isAdvanced && arg.startsWith(argument.value + "=")) + return argument.value == arg } var i = 0 @@ -116,6 +129,9 @@ fun parseCommandLineArguments(args: List, resu argument.isAdvanced && arg.startsWith(argument.value + "=") -> { arg.substring(argument.value.length + 1) } + argument.isAdvanced && arg.startsWith(argument.deprecatedName + "=") -> { + arg.substring(argument.deprecatedName.length + 1) + } i == args.size -> { errors.argumentWithoutValue = arg break@loop