diff options
-rw-r--r-- | lldb/source/Interpreter/CommandAlias.cpp | 7 | ||||
-rw-r--r-- | lldb/test/API/commands/command/nested_alias/TestNestedAlias.py | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/lldb/source/Interpreter/CommandAlias.cpp b/lldb/source/Interpreter/CommandAlias.cpp index e36edcac15a5..f6eaeacff81e 100644 --- a/lldb/source/Interpreter/CommandAlias.cpp +++ b/lldb/source/Interpreter/CommandAlias.cpp @@ -8,6 +8,7 @@ #include "lldb/Interpreter/CommandAlias.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/Support/ErrorHandling.h" #include "lldb/Interpreter/CommandInterpreter.h" @@ -211,9 +212,9 @@ std::pair<lldb::CommandObjectSP, OptionArgVectorSP> CommandAlias::Desugar() { // FIXME: This doesn't work if the original alias fills a slot in the // underlying alias, since this just appends the two lists. auto desugared = ((CommandAlias *)underlying.get())->Desugar(); - auto options = GetOptionArguments(); - options->insert(options->begin(), desugared.second->begin(), - desugared.second->end()); + OptionArgVectorSP options = std::make_shared<OptionArgVector>(); + llvm::append_range(*options, *desugared.second); + llvm::append_range(*options, *GetOptionArguments()); return {desugared.first, options}; } diff --git a/lldb/test/API/commands/command/nested_alias/TestNestedAlias.py b/lldb/test/API/commands/command/nested_alias/TestNestedAlias.py index 29b4af335028..7cce6138aa3e 100644 --- a/lldb/test/API/commands/command/nested_alias/TestNestedAlias.py +++ b/lldb/test/API/commands/command/nested_alias/TestNestedAlias.py @@ -101,3 +101,7 @@ class NestedAliasTestCase(TestBase): self.expect('command alias two expr -- 2') self.expect('command alias add_two two +') self.expect('add_two 3', patterns=[' = 5$']) + # Check that aliases to aliases to raw input commands work the second + # and subsequent times. + self.expect('add_two 3', patterns=[' = 5$']) + self.expect('add_two 3', patterns=[' = 5$']) |