diff options
author | Hans Wennborg <hans@hanshq.net> | 2015-05-04 18:00:13 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2015-05-04 18:00:13 +0000 |
commit | 375079a549c584bd14dad501ecc4575738cea3c1 (patch) | |
tree | 7f34df152c3ea1aebbc5082ce0965c3c7b01be4c /lib/Option | |
parent | e6cd0c73a7af8db3deaa6b409040885f133be9c0 (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.cpp | 5 |
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: { |