| # XFAIL: target-windows | |
| # Test the ${function.basename} 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 { | |
| 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' |