# Check that we have an appropriate fallback for ${function.qualifiers} in
# languages that don't implement this frame format variable (in this case Objective-C).

# RUN: split-file %s %t
# RUN: %clang_host -g -gdwarf %t/main.m -o %t.objc.out
# RUN: %lldb -x -b -s %t/commands.input %t.objc.out -o exit 2>&1 \
# RUN:       | FileCheck %s

#--- main.m

int foo() {}
int bar() { foo(); }

int main() { return bar(); }

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

run
bt

# CHECK: bt
# CHECK-NOT: custom-frame
