llvm/lldb/test/Shell/SymbolFile/DWARF/x86/typedef-in-incomplete-type.cpp

// RUN: %clangxx --target=x86_64-pc-linux -flimit-debug-info -o %t -c %s -g
// RUN: %lldb %t -o "target var a" -o "expr -- var" -o exit | FileCheck %s

// This forces lldb to attempt to complete the type A. Since it has no
// definition it will fail.
// CHECK: target var a
// CHECK: (A) a = <incomplete type "A">

// Now attempt to display the second variable, which will try to add a typedef
// to the incomplete type. Make sure that succeeds. Use the expression command
// to make sure the resulting AST can be imported correctly.
// CHECK: expr -- var
// CHECK: (A::X) $0 = 0

struct A {
  // Declare the constructor, but don't define it to avoid emitting the
  // definition in the debug info.
  A();
  using X = int;
};

A a;
A::X var;