summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Interpreter/CommandAlias.h4
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py8
-rw-r--r--lldb/source/Interpreter/CommandAlias.cpp11
3 files changed, 23 insertions, 0 deletions
diff --git a/lldb/include/lldb/Interpreter/CommandAlias.h b/lldb/include/lldb/Interpreter/CommandAlias.h
index f14ac52e705..d48719f821e 100644
--- a/lldb/include/lldb/Interpreter/CommandAlias.h
+++ b/lldb/include/lldb/Interpreter/CommandAlias.h
@@ -106,6 +106,10 @@ public:
std::pair<lldb::CommandObjectSP, OptionArgVectorSP>
Desugar ();
+protected:
+ bool
+ IsNestedAlias ();
+
private:
lldb::CommandObjectSP m_underlying_command_sp;
std::string m_option_string;
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py b/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py
index fb3a18ea427..16ee2e586df 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/nested_alias/TestNestedAlias.py
@@ -46,6 +46,8 @@ class NestedAliasTestCase(TestBase):
def cleanup():
self.runCmd('command unalias read', check=False)
self.runCmd('command unalias rd', check=False)
+ self.runCmd('command unalias fo', check=False)
+ self.runCmd('command unalias foself', check=False)
# Execute the cleanup function during test case tear down.
self.addTearDownHook(cleanup)
@@ -58,3 +60,9 @@ class NestedAliasTestCase(TestBase):
self.expect('memory read -f A -c 3 `&my_ptr[0]`', substrs=['deadfeed'], matching=False)
self.expect('rd `&my_ptr[0]`', substrs=['deadfeed'], matching=False)
+
+ self.runCmd('command alias fo frame variable -O --')
+ self.runCmd('command alias foself fo self')
+
+ self.expect('help foself', substrs=['--show-all-children', '--raw-output'], matching=False)
+ self.expect('help foself', substrs=['Show frame variables.'], matching=True)
diff --git a/lldb/source/Interpreter/CommandAlias.cpp b/lldb/source/Interpreter/CommandAlias.cpp
index f7d8e8e9f1b..a915d63e654 100644
--- a/lldb/source/Interpreter/CommandAlias.cpp
+++ b/lldb/source/Interpreter/CommandAlias.cpp
@@ -236,11 +236,22 @@ CommandAlias::IsDashDashCommand ()
break;
}
}
+ // if this is a nested alias, it may be adding arguments on top of an already dash-dash alias
+ if ((m_is_dashdash_alias == eLazyBoolNo) && IsNestedAlias())
+ m_is_dashdash_alias = (GetUnderlyingCommand()->IsDashDashCommand() ? eLazyBoolYes : eLazyBoolNo);
}
}
return (m_is_dashdash_alias == eLazyBoolYes);
}
+bool
+CommandAlias::IsNestedAlias ()
+{
+ if (GetUnderlyingCommand())
+ return GetUnderlyingCommand()->IsAlias();
+ return false;
+}
+
std::pair<lldb::CommandObjectSP, OptionArgVectorSP>
CommandAlias::Desugar ()
{
OpenPOWER on IntegriCloud