Improved parsing of internal compiler arguments with boolean state in

case when the argument is listed twice in the list of command line
arguments. The last value will be used.
#KT-27181 Fixed
This commit is contained in:
Andrey Uskov
2019-04-27 22:48:59 +03:00
parent affe8baf74
commit 998a24414a
6 changed files with 52 additions and 1 deletions
@@ -135,7 +135,15 @@ private fun <A : CommonToolArguments> parsePreprocessedCommandLineArguments(args
if (parser == null) {
errors.unknownExtraFlags += arg
} else {
internalArguments.add(parser.parseInternalArgument(arg, errors) ?: continue)
val newInternalArgument = parser.parseInternalArgument(arg, errors) ?: continue
val argumentWillBeOverridden = when (newInternalArgument) {
is ManualLanguageFeatureSetting -> internalArguments.firstOrNull { (it is ManualLanguageFeatureSetting) && (it.languageFeature == newInternalArgument.languageFeature) }
else -> null
}
if (argumentWillBeOverridden != null) {
internalArguments.remove(argumentWillBeOverridden)
}
internalArguments.add(newInternalArgument)
}
continue