# XFAIL: target-windows

# Test the ${function.scope} frame-format variable.

# RUN: split-file %s %t
# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out
# RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \
# RUN:       | FileCheck %s
#
# RUN: %clangxx_host -O0 %t/main.cpp -o %t-nodebug.out
# RUN: %lldb -x -b -s %t/commands.input %t-nodebug.out -o exit 2>&1 \
# RUN:       | FileCheck %s

#--- main.cpp
namespace ns::ns2 {
inline namespace ins {
template <typename T>
struct Foo {
    void func() {}
};

int foo() {
    Foo<int>{}.func();
    return 5;
}
}  // namespace ins
}  // namespace ns::ns2

using namespace ns::ns2;

int bar() {
  return ns::ns2::foo();
}

int main() { return bar(); }

#--- commands.input
settings set -f frame-format "custom-frame '${function.scope}'\n"
break set -n func

run
bt

# CHECK: frame 'ns::ns2::ins::Foo<int>::'
# CHECK: frame 'ns::ns2::ins::'
# CHECK: frame ''
