# XFAIL: target-windows

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

# RUN: split-file %s %t
# RUN: %clang_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: %clang_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 {
template<typename T>
struct Bar {
  template<typename K>
  T bar(K k) const & { return 1.0f; }
};

template<typename T>
struct Foo {
  template<typename K>
  [[gnu::abi_tag("Test")]] void foo() const volatile && {
    Bar<float> b;
    b.bar(b);
  }
};

template<typename T>
T func() {
  ns::Foo<int>{}.foo<int>();
  return T{};
}
} // namespace ns

int main() {
  ns::func<ns::Foo<int>>();
  return 0;
}

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

run
bt

# CHECK: custom-frame 'bar'
# CHECK: custom-frame 'foo[abi:Test]'
# CHECK: custom-frame 'func'
