Author: Jim Ingham Date: 2022-06-03T11:34:53-07:00 New Revision: 8cc8b36f24d6f3133c44e238a657309620eedc19
URL: https://github.com/llvm/llvm-project/commit/8cc8b36f24d6f3133c44e238a657309620eedc19 DIFF: https://github.com/llvm/llvm-project/commit/8cc8b36f24d6f3133c44e238a657309620eedc19.diff LOG: CommandObjectRegexCommand shouldn't put two commands on the history stack. It was putting the command the user typed, and then the resolved command in the command history. That caused up-arrow not to work correctly when the regex command was invoked from a Python-command. Plus it's just weird. Differential Revision: https://reviews.llvm.org/D126789 Added: Modified: lldb/source/Commands/CommandObjectRegexCommand.cpp lldb/test/API/functionalities/history/TestHistoryRecall.py Removed: ################################################################################ diff --git a/lldb/source/Commands/CommandObjectRegexCommand.cpp b/lldb/source/Commands/CommandObjectRegexCommand.cpp index a99a9e760cb26..857193036e393 100644 --- a/lldb/source/Commands/CommandObjectRegexCommand.cpp +++ b/lldb/source/Commands/CommandObjectRegexCommand.cpp @@ -71,11 +71,10 @@ bool CommandObjectRegexCommand::DoExecute(llvm::StringRef command, // Interpret the new command and return this as the result! if (m_interpreter.GetExpandRegexAliases()) result.GetOutputStream().Printf("%s\n", new_command->c_str()); - // Pass in true for "no context switching". The command that called us - // should have set up the context appropriately, we shouldn't have to - // redo that. + // We don't have to pass an override_context here, as the command that + // called us should have set up the context appropriately. return m_interpreter.HandleCommand(new_command->c_str(), - eLazyBoolCalculate, result); + eLazyBoolNo, result); } } result.SetStatus(eReturnStatusFailed); diff --git a/lldb/test/API/functionalities/history/TestHistoryRecall.py b/lldb/test/API/functionalities/history/TestHistoryRecall.py index b3a012dd7bbae..2c17fd3e77446 100644 --- a/lldb/test/API/functionalities/history/TestHistoryRecall.py +++ b/lldb/test/API/functionalities/history/TestHistoryRecall.py @@ -1,5 +1,5 @@ """ -Make sure the !N and !-N commands work properly. +Test some features of "session history" and history recall. """ @@ -20,9 +20,25 @@ class TestHistoryRecall(TestBase): def test_history_recall(self): """Test the !N and !-N functionality of the command interpreter.""" - self.sample_test() + self.do_bang_N_test() - def sample_test(self): + def test_regex_history(self): + """Test the regex commands don't add two elements to the history""" + self.do_regex_history_test() + + def do_regex_history_test(self): + interp = self.dbg.GetCommandInterpreter() + result = lldb.SBCommandReturnObject() + command = "_regexp-break foo.c:12" + self.runCmd(command, msg="Run the regex break command", inHistory = True) + interp.HandleCommand("session history", result, True) + self.assertTrue(result.Succeeded(), "session history ran successfully") + results = result.GetOutput() + self.assertIn(command, results, "Recorded the actual command") + self.assertNotIn("breakpoint set --file 'foo.c' --line 12", results, + "Didn't record the resolved command") + + def do_bang_N_test(self): interp = self.dbg.GetCommandInterpreter() result = lldb.SBCommandReturnObject() interp.HandleCommand("session history", result, True) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits