[Lldb-commits] [lldb] 9878bac - Revert "[lldb] Still echo the command if we print the error." (#172110)

via lldb-commits lldb-commits at lists.llvm.org
Fri Dec 12 15:53:27 PST 2025


Author: Jonas Devlieghere
Date: 2025-12-12T23:53:22Z
New Revision: 9878bac3a83b29e2970f2ce1b985e1afa78896d0

URL: https://github.com/llvm/llvm-project/commit/9878bac3a83b29e2970f2ce1b985e1afa78896d0
DIFF: https://github.com/llvm/llvm-project/commit/9878bac3a83b29e2970f2ce1b985e1afa78896d0.diff

LOG: Revert "[lldb] Still echo the command if we print the error." (#172110)

Reverts llvm/llvm-project#171931 because the test is failing on Windows.

Added: 
    

Modified: 
    lldb/source/Interpreter/CommandInterpreter.cpp

Removed: 
    lldb/test/Shell/Settings/Inputs/FailedCommand.in
    lldb/test/Shell/Settings/TestEchoFailedCommands.test


################################################################################
diff  --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp
index 9ccf22801d667..0198ddcfa31e0 100644
--- a/lldb/source/Interpreter/CommandInterpreter.cpp
+++ b/lldb/source/Interpreter/CommandInterpreter.cpp
@@ -3371,15 +3371,14 @@ void CommandInterpreter::IOHandlerInputComplete(IOHandler &io_handler,
     if (line.empty())
       return;
   }
-  bool echoed_command = false;
   if (!is_interactive) {
     // When using a non-interactive file handle (like when sourcing commands
     // from a file) we need to echo the command out so we don't just see the
     // command output and no command...
     if (EchoCommandNonInteractive(line, io_handler.GetFlags())) {
-      io_handler.GetOutputStreamFileSP()->Lock()
-          << io_handler.GetPrompt() << line << '\n';
-      echoed_command = true;
+      LockedStreamFile locked_stream =
+          io_handler.GetOutputStreamFileSP()->Lock();
+      locked_stream.Printf("%s%s\n", io_handler.GetPrompt(), line.c_str());
     }
   }
 
@@ -3399,21 +3398,10 @@ void CommandInterpreter::IOHandlerInputComplete(IOHandler &io_handler,
   lldb_private::CommandReturnObject result(m_debugger.GetUseColor());
   HandleCommand(line.c_str(), eLazyBoolCalculate, result);
 
-  const bool print_result =
-      result.Succeeded() &&
-      io_handler.GetFlags().Test(eHandleCommandFlagPrintResult);
-  const bool print_error =
-      io_handler.GetFlags().Test(eHandleCommandFlagPrintErrors);
-
-  // Now emit the command output text from the command we just executed.
-  if (print_result || print_error) {
-    // If the command failed and we didn't echo it, echo it now so the user
-    // knows which command produced the error.
-    if (!echoed_command && !result.Succeeded() && print_error) {
-      io_handler.GetOutputStreamFileSP()->Lock()
-          << io_handler.GetPrompt() << line << '\n';
-    }
-
+  // Now emit the command output text from the command we just executed
+  if ((result.Succeeded() &&
+       io_handler.GetFlags().Test(eHandleCommandFlagPrintResult)) ||
+      io_handler.GetFlags().Test(eHandleCommandFlagPrintErrors)) {
     auto DefaultPrintCallback = [&](const CommandReturnObject &result) {
       // Display any inline diagnostics first.
       const bool inline_diagnostics = !result.GetImmediateErrorStream() &&

diff  --git a/lldb/test/Shell/Settings/Inputs/FailedCommand.in b/lldb/test/Shell/Settings/Inputs/FailedCommand.in
deleted file mode 100644
index c3bc5c704fe34..0000000000000
--- a/lldb/test/Shell/Settings/Inputs/FailedCommand.in
+++ /dev/null
@@ -1,4 +0,0 @@
-# This should succeed and not be echoed.
-expr 1+2
-# This should fail and be echoed.
-bogus_command

diff  --git a/lldb/test/Shell/Settings/TestEchoFailedCommands.test b/lldb/test/Shell/Settings/TestEchoFailedCommands.test
deleted file mode 100644
index 3bb465707a41d..0000000000000
--- a/lldb/test/Shell/Settings/TestEchoFailedCommands.test
+++ /dev/null
@@ -1,10 +0,0 @@
-# Test that failed commands are echoed even when echoing is disabled.
-# This ensures users can see which command produced an error.
-
-RUN: mkdir -p %t.home
-RUN: cp %S/Inputs/FailedCommand.in %t.home/.lldbinit
-RUN: env HOME=%t.home %lldb-init -b 2>&1 | FileCheck %s
-
-CHECK-NOT: expr 1+2
-CHECK: (lldb) bogus_command
-CHECK: error: 'bogus_command' is not a valid command


        


More information about the lldb-commits mailing list