# 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
#
#--- 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 -l 5 -f main.cpp

run
bt

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