# Test shows that source line breakpoint works with LLDB on demand symbol loading.

# UNSUPPORTED: system-windows
# RUN: mkdir -p %t
# RUN: cd %t
# RUN: %build %p/Inputs/basic.cpp -o basic.out
# RUN: %lldb -b -O "settings set symbols.load-on-demand true" -s %s basic.out | FileCheck %s

breakpoint list
# CHECK: No breakpoints currently set

breakpoint set -f basic.cpp -l 1
# CHECK: where = {{.*}}`bar(int, int) + {{.*}} at basic.cpp:1

breakpoint list
# CHECK: file = 'basic.cpp'

run
# CHECK: stop reason = breakpoint

bt
# CHECK: {{.*}}`bar(x=33, y=78) at basic.cpp:1
# CHECK: {{.*}}`foo(x=33, y=78) at basic.cpp:3
# CHECK: {{.*}}`main(argc=1, argv={{.*}}) at basic.cpp:5
