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

# Windows' link.exe does not preserve DWARF information, and we cannot get
# inlining information from PDB at this time, see:
# https://github.com/llvm/llvm-project/issues/143104
# REQUIRES: (system-windows && lld) || !system-windows

# RUN: split-file %s %t
# RUN: %clangxx_host -g -gdwarf %t/main.cpp -o %t.out %if system-windows %{-fuse-ld=lld%}
# RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \
# RUN:       | FileCheck %s

#--- main.cpp

void regular();

[[clang::always_inline]] void inlined1() {
  regular();
}
void regular() {inlined1();}
[[clang::always_inline]] void inlined2() {regular();}

int main() {
  inlined2();
  return 0;
}

#--- commands.input

settings set frame-format "frame '${function.name}{${function.is-inlined} (Inlined)}'\n"
breakpoint set -n inlined1
run
bt

# CHECK:      (lldb) bt
# CHECK:      frame '{{.*}}inlined1({{.*}}) (Inlined)'
# CHECK-NEXT: frame '{{.*}}regular({{.*}})'
# CHECK-NEXT: frame '{{.*}}inlined2({{.*}}) (Inlined)'
# CHECK-NEXT: frame 'main'
