# XFAIL: target-windows

# Test the ${function.template-arguments} 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
template<typename K>
struct Foo {
    template<typename T>
    void func() {}
};

template<typename T, template <typename> class K,
         typename M>
int foo() {
    Foo<int>{}.func<T>();
    return 5;
}

int bar() {
  return foo<int, Foo, Foo<float>>();
}

int main() { return bar(); }

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

run
bt

# CHECK: custom-frame '<int>'
# CHECK: custom-frame '<int, Foo, Foo<float>>'
# CHECK: custom-frame ''
