llvm-project/lldb/test/Shell/ScriptInterpreter
Dave Lee e9349ef9e6 Fix `script -lpython` to handle control flow in one-line commands.
The fix is to append a newline to the source being evaluated.

Without this patch, the following commands **print no output, no errors**.

```
(lldb) script if "foo" in lldb.frame.name: print(lldb.thread)
(lldb) script for f in lldb.thread: print(f.name)
```

The issue is with `code.InteractiveConsole.runsource()`. A trailing newline is
needed for these expressions to be evaluated. I don't know why this is, the
docs don't mention anything.

From a python repl, the following samples show that a terminal newline allows
statements containing flow control to fully execute.

```
>>> import code
>>> repl = code.InteractiveConsole()
>>> repl.runsource("if True: print(1)")
True
>>> repl.runsource("if True: print(1)\n")
1
False
```

Notes:

From an interactive python repl, the output is not printed immediately. The
user is required to enter a blank line following the first.

```
>>> if True: print(1)
...
1
```

However, `python -c 'if True: print(1)'` works without needing a newline.

Reviewed By: JDevlieghere

Differential Revision: https://reviews.llvm.org/D127586
2022-06-15 22:20:48 -07:00
..
Lua [lldb] Fix Lua/watchpoint_callback.test on Apple Silicon 2022-02-07 12:08:24 -08:00
None [lldb/ScriptInterpreter] Unify error message for command script import 2019-12-22 16:47:28 -08:00
Python Fix `script -lpython` to handle control flow in one-line commands. 2022-06-15 22:20:48 -07:00