diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index 197bffe9c982f..41bc8abf4897f 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -640,9 +640,15 @@ void CommandObjectExpression::DoExecute(llvm::StringRef command, repl_sp->SetValueObjectDisplayOptions(m_varobj_options); } + if (!expr.empty()) { + result.GetOutputStream().Printf( + "Warning: trailing input is ignored in --repl mode\n"); + } + IOHandlerSP io_handler_sp(repl_sp->GetIOHandler()); io_handler_sp->SetIsDone(false); debugger.RunIOHandlerAsync(io_handler_sp); + return; } else { repl_error = Status::FromErrorStringWithFormat( "Couldn't create a REPL for %s", diff --git a/lldb/test/API/repl/clang/TestClangREPL.py b/lldb/test/API/repl/clang/TestClangREPL.py index 97d91d1b8f7a5..3152018865b1e 100644 --- a/lldb/test/API/repl/clang/TestClangREPL.py +++ b/lldb/test/API/repl/clang/TestClangREPL.py @@ -56,6 +56,16 @@ def test_basic_completion(self): self.quit() + # Re-enter the REPL with trailing input to trigger warning. + self.child.send("expression --repl -l c -- 3 + 3\n") + self.child.expect_exact("Warning: trailing input is ignored in --repl mode\n") + self.child.expect_exact("1>") + + # Evaluate another expression after warning. + self.expect_repl("4 + 4", substrs=["(int) $3 = 8"]) + + self.quit() + # PExpect uses many timeouts internally and doesn't play well # under ASAN on a loaded machine.. @skipIfAsan