summaryrefslogtreecommitdiff
path: root/lib/Option
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2015-05-04 18:00:13 +0000
committerHans Wennborg <hans@hanshq.net>2015-05-04 18:00:13 +0000
commit375079a549c584bd14dad501ecc4575738cea3c1 (patch)
tree7f34df152c3ea1aebbc5082ce0965c3c7b01be4c /lib/Option
parente6cd0c73a7af8db3deaa6b409040885f133be9c0 (diff)
Option parsing: properly handle flag aliases for joined options (PR23394)
A joined option always needs to have an argument, even if it's an empty one. Clang would previously assert when trying to use --extra-warnings, which is a flag alias for -W, which is a joined option. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236434 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Option')
-rw-r--r--lib/Option/Option.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Option/Option.cpp b/lib/Option/Option.cpp
index e29d6491c7f..221414d79e7 100644
--- a/lib/Option/Option.cpp
+++ b/lib/Option/Option.cpp
@@ -125,6 +125,11 @@ Arg *Option::accept(const ArgList &Args,
Val += strlen(Val) + 1;
}
}
+
+ if (UnaliasedOption.getKind() == JoinedClass && !getAliasArgs())
+ // A Flag alias for a Joined option must provide an argument.
+ A->getValues().push_back("");
+
return A;
}
case JoinedClass: {