brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 197ac23 Raw
161 lines · plain
1# REQUIRES: target-windows2 3# Test namespace lookup.4# RUN: split-file %s %t5# RUN: %build --nodefaultlib -o %t.exe -- %t/main.cpp6# RUN: %lldb -f %t.exe -s \7# RUN:     %t/commands.input 2>&1 | FileCheck %s8 9#--- main.cpp10 11struct S {12  char a[1];13};14 15namespace Outer {16 17  struct S {18    char a[2];19  };20 21  namespace Inner1 {22    struct S {23      char a[3];24    };25 26    namespace Inner2 {27      struct S {28        char a[4];29      };30    } // namespace Inner231  } // namespace Inner132 33  namespace Inner2 {34    struct S {35      char a[5];36    };37  } // namespace Inner238 39  namespace {40    struct A {41      char a[6];42    };43  } // namespace44 45} // namespace Outer46 47namespace {48  struct A {49    char a[7];50  };51} // namespace52 53int main(int argc, char **argv) {54  S s;55  Outer::S os;56  Outer::Inner1::S oi1s;57  Outer::Inner1::Inner2::S oi1i2s;58  Outer::Inner2::S oi2s;59  A a1;60  Outer::A a2;61  return sizeof(s) + sizeof(os) + sizeof(oi1s) + sizeof(oi1i2s) + sizeof(oi2s) + sizeof(a1) + sizeof(a2);62}63 64#--- commands.input65 66b main67r68 69type lookup S70type lookup ::S71type lookup Outer::S72type lookup Outer::Inner1::S73type lookup Inner1::S74type lookup Outer::Inner1::Inner2::S75type lookup Inner2::S76type lookup Outer::Inner2::S77type lookup Outer::A78type lookup A79type lookup ::A80# Test that Clang can find the namespaces as well81expr sizeof(S)82expr sizeof(::S)83expr sizeof(Outer::S)84expr sizeof(Outer::Inner1::S)85expr sizeof(Inner1::S)86expr sizeof(Outer::Inner1::Inner2::S)87expr sizeof(Outer::Inner2::S)88expr sizeof(Outer::A)89expr sizeof(A)90expr sizeof(::A)91 92quit93 94# CHECK:      (lldb) type lookup S  95# CHECK:      struct S {96# CHECK:      struct S {97# CHECK:      struct S {98# CHECK:      struct S {99# CHECK:      struct S {100# CHECK:      }101# CHECK-NEXT: (lldb) type lookup ::S102# CHECK-NEXT: struct S {103# CHECK-NEXT:     char a[1];104# CHECK-NEXT: }105# CHECK-NEXT: (lldb) type lookup Outer::S106# CHECK-NEXT: struct S {107# CHECK-NEXT:     char a[2];108# CHECK-NEXT: }109# CHECK-NEXT: (lldb) type lookup Outer::Inner1::S110# CHECK-NEXT: struct S {111# CHECK-NEXT:     char a[3];112# CHECK-NEXT: }113# CHECK-NEXT: (lldb) type lookup Inner1::S114# CHECK-NEXT: struct S {115# CHECK-NEXT:     char a[3];116# CHECK-NEXT: }117# CHECK-NEXT: (lldb) type lookup Outer::Inner1::Inner2::S118# CHECK-NEXT: struct S {119# CHECK-NEXT:     char a[4];120# CHECK-NEXT: }121# CHECK-NEXT: (lldb) type lookup Inner2::S         122# CHECK-NEXT: struct S {123# CHECK:      struct S {124# CHECK:      }125# CHECK-NEXT: (lldb) type lookup Outer::Inner2::S        126# CHECK-NEXT: struct S {127# CHECK-NEXT:     char a[5];128# CHECK-NEXT: }129# CHECK-NEXT: (lldb) type lookup Outer::A        130# CHECK-NEXT: struct A {131# CHECK-NEXT:     char a[6];132# CHECK-NEXT: }133# CHECK-NEXT: (lldb) type lookup A       134# CHECK-NEXT: struct A {135# CHECK:      struct A {136# CHECK:      }137# CHECK-NEXT: (lldb) type lookup ::A138# CHECK-NEXT: struct A {139# CHECK-NEXT:     char a[7];140# CHECK-NEXT: }141# CHECK-NEXT: (lldb) expr sizeof(S) 142# CHECK-NEXT: (__size_t) $0 = 1143# CHECK-NEXT: (lldb) expr sizeof(::S)144# CHECK-NEXT: (__size_t) $1 = 1145# CHECK-NEXT: (lldb) expr sizeof(Outer::S)146# CHECK-NEXT: (__size_t) $2 = 2147# CHECK-NEXT: (lldb) expr sizeof(Outer::Inner1::S)148# CHECK-NEXT: (__size_t) $3 = 3149# CHECK-NEXT: (lldb) expr sizeof(Inner1::S)150# CHECK-NEXT: (__size_t) $4 = 3151# CHECK-NEXT: (lldb) expr sizeof(Outer::Inner1::Inner2::S)152# CHECK-NEXT: (__size_t) $5 = 4153# CHECK-NEXT: (lldb) expr sizeof(Outer::Inner2::S)154# CHECK-NEXT: (__size_t) $6 = 5155# CHECK-NEXT: (lldb) expr sizeof(Outer::A)156# CHECK-NEXT: (__size_t) $7 = 6157# CHECK-NEXT: (lldb) expr sizeof(A)158# CHECK-NEXT: (__size_t) $8 = 7159# CHECK-NEXT: (lldb) expr sizeof(::A)160# CHECK-NEXT: (__size_t) $9 = 7161