Files
clang-p2996/lldb/test/API/commands/expression/dollar-in-variable/main.c
Pavel Labath ba898282bc [lldb/test] Make "inline" tests handle multiple statements at the same location
Summary:
The test machinery translates each continuous block of "//%" comments
into a single breakpoint. If there's no code between the blocks the
breakpoints will end up at the same location in the program. When the
process stops at a breakpoint lldb correctly reports all breakpoint IDs,
but the test machinery only looks at the first one. This results in a
very dangerous situation as it means some checks can be silently
stopped.

This patch fixes that by making the test machinery iterate through all
breakpoints at a given location and execute all commands.

Reviewers: vsk, JDevlieghere

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D79563
2020-05-11 16:37:34 +02:00

23 lines
723 B
C

// Make sure we correctly handle $ in variable names.
int main() {
// Some variables that might conflict with our variables below.
int __lldb_expr_result = 2;
int $$foo = 1;
int R0 = 2;
// Some variables with dollar signs that should work (and shadow
// any built-in LLDB variables).
int $__lldb_expr_result = 11;
int $foo = 12;
int $R0 = 13;
int $0 = 14;
//%self.expect("expr $__lldb_expr_result", substrs=['(int) $0 = 11'])
//%self.expect("expr $foo", substrs=['(int)', ' = 12'])
//%self.expect("expr $R0", substrs=['(int)', ' = 13'])
//%self.expect("expr int $foo = 123", error=True, substrs=["declaration conflicts"])
//%self.expect("expr $0", substrs=['(int)', ' = 11'])
return 0;
}