| // clang-format off |
| |
| // REQUIRES: system-windows |
| // RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s |
| // RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols -dump-ast %t.exe | FileCheck %s |
| |
| namespace A { |
| namespace B { |
| using NamespaceTypedef = double; |
| } |
| template<typename T> |
| class C { |
| public: |
| using ClassTypedef = T; |
| }; |
| using ClassTypedef = C<char>::ClassTypedef; |
| using ClassTypedef2 = C<wchar_t>::ClassTypedef; |
| |
| template<typename T> |
| using AliasTemplate = typename C<T>::ClassTypedef; |
| } |
| |
| namespace { |
| using AnonNamespaceTypedef = bool; |
| } |
| |
| using IntTypedef = int; |
| |
| using ULongArrayTypedef = unsigned long[10]; |
| |
| using RefTypedef = long double*&; |
| |
| using FuncPtrTypedef = long long(*)(int&, unsigned char**, short[], const double, volatile bool); |
| |
| using VarArgsFuncTypedef = char(*)(void*, long, unsigned short, unsigned int, ...); |
| |
| using VarArgsFuncTypedefA = float(*)(...); |
| |
| int main(int argc, char **argv) { |
| long double *Ptr; |
| |
| A::B::NamespaceTypedef *X0; |
| A::C<char>::ClassTypedef *X1; |
| A::C<wchar_t>::ClassTypedef *X2; |
| AnonNamespaceTypedef *X3; |
| IntTypedef *X4; |
| ULongArrayTypedef *X5; |
| RefTypedef X6 = Ptr; |
| FuncPtrTypedef X7; |
| VarArgsFuncTypedef X8; |
| VarArgsFuncTypedefA X9; |
| A::AliasTemplate<float> X10; |
| return 0; |
| } |
| |
| |
| // CHECK: namespace { |
| // CHECK-NEXT: typedef bool AnonNamespaceTypedef; |
| // CHECK-NEXT: } |
| // CHECK-NEXT: typedef unsigned long ULongArrayTypedef[10]; |
| // CHECK-NEXT: typedef double *&RefTypedef; |
| // CHECK-NEXT: namespace A { |
| // CHECK-NEXT: namespace B { |
| // CHECK-NEXT: typedef double NamespaceTypedef; |
| // CHECK-NEXT: } |
| // CHECK-NEXT: typedef float AliasTemplate<float>; |
| // CHECK-NEXT: } |
| // CHECK-NEXT: typedef long long (*FuncPtrTypedef)(int &, unsigned char **, short *, const double, volatile bool); |
| // CHECK-NEXT: typedef char (*VarArgsFuncTypedef)(void *, long, unsigned short, unsigned int, ...); |
| // CHECK-NEXT: typedef float (*VarArgsFuncTypedefA)(...); |
| // CHECK-NEXT: typedef int IntTypedef; |