// clang-format off
// REQUIRES: lld

// Test various interesting cases for AST reconstruction.
// RUN: %clang_cl /Z7 /GS- /GR- /std:c++latest -Xclang -fkeep-static-consts /c /Fo%t.obj -- %s
// RUN: lld-link /DEBUG /nodefaultlib /entry:main /OUT:%t.exe /PDB:%t.pdb -- %t.obj
// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
// RUN:     %p/Inputs/bitfields.lldbinit 2>&1 | FileCheck %s

// Test trivial versions of each tag type.
struct Struct {
  int A : 5 = 6;
  int B : 7 = 8;
  unsigned C : 3 = 2;
  unsigned D : 15 = 12345;
  char E : 1 = 0;
  char F : 2 = 1;
  char G : 3 = 2;
  // H should be at offset 0 of a new byte.
  char H : 3 = 3;
};

constexpr Struct TheStruct;


int main(int argc, char **argv) {
  return TheStruct.A;
}

// CHECK: (lldb) target variable -T TheStruct
// CHECK: (const Struct) TheStruct = {
// CHECK:   (int:5) A = 6
// CHECK:   (int:7) B = 8
// CHECK:   (unsigned int:3) C = 2
// CHECK:   (unsigned int:15) D = 12345
// CHECK:   (char:1) E = '\0'
// CHECK:   (char:2) F = '\x01'
// CHECK:   (char:3) G = '\x02'
// CHECK:   (char:3) H = '\x03'
// CHECK: }
//
// CHECK: target modules dump ast
// CHECK: Dumping clang ast for 1 modules.
// CHECK: TranslationUnitDecl {{.*}}
// CHECK: |-CXXRecordDecl {{.*}} struct Struct definition
// CHECK: | |-FieldDecl {{.*}} A 'int'
// CHECK: | | `-IntegerLiteral {{.*}} 'int' 5
// CHECK: | |-FieldDecl {{.*}} B 'int'
// CHECK: | | `-IntegerLiteral {{.*}} 'int' 7
// CHECK: | |-FieldDecl {{.*}} C 'unsigned int'
// CHECK: | | `-IntegerLiteral {{.*}} 'int' 3
// CHECK: | |-FieldDecl {{.*}} D 'unsigned int'
// CHECK: | | `-IntegerLiteral {{.*}} 'int' 15
// CHECK: | |-FieldDecl {{.*}} E 'char'
// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
// CHECK: | |-FieldDecl {{.*}} F 'char'
// CHECK: | | `-IntegerLiteral {{.*}} 'int' 2
// CHECK: | |-FieldDecl {{.*}} G 'char'
// CHECK: | | `-IntegerLiteral {{.*}} 'int' 3
// CHECK: | `-FieldDecl {{.*}} H 'char'
// CHECK: |   `-IntegerLiteral {{.*}} 'int' 3
