xref: /llvm-project/lldb/test/Shell/SymbolFile/PDB/ast-restore.test (revision 0cfcd387f968f2c9de0648673b5db9e221e5c84e)
1REQUIRES: system-windows, msvc
2RUN: %build --compiler=msvc --nodefaultlib --output=%t.exe %S/Inputs/AstRestoreTest.cpp
3RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=ENUM %s
4RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=ENUM %s
5RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=GLOBAL %s
6RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=BASE %s
7RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=CLASS %s
8RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=CLASS %s
9RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=INNER %s
10RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=TEMPLATE %s
11RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=FOO %s
12RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=MAIN %s
13
14ENUM: Module: {{.*}}
15ENUM: namespace N0 {
16ENUM:     namespace N1 {
17ENUM:         namespace  {
18ENUM:             enum Enum {
19ENUM:                 Enum_0,
20ENUM:                 Enum_1,
21ENUM:                 Enum_2,
22ENUM:                 Enum_3
23ENUM:             };
24ENUM:         }
25ENUM:     }
26ENUM: }
27
28GLOBAL: N0::N1::(anonymous namespace)::Enum {{.*}}Global;
29
30BASE: Module: {{.*}}
31BASE: namespace N0 {
32BASE:     namespace N1 {
33BASE:         struct Base {
34BASE:             N0::N1::(anonymous namespace)::Enum m_e;
35BASE:         };
36BASE:     }
37BASE: }
38
39CLASS: Module: {{.*}}
40CLASS: namespace N0 {
41CLASS:     namespace N1 {
42CLASS:         class Class : public N0::N1::Base {
43CLASS-DAG:             const N0::N1::(anonymous namespace)::Enum m_ce;
44CLASS-DAG:             static int ClassStatic;
45CLASS-DAG:             static const int ClassStaticConst = 8;
46CLASS-DAG:             static const int ClassStaticConstexpr = 9;
47CLASS-DAG:             static constexpr float ClassStaticConstexprFloat = 10.F;
48CLASS-DAG:             static constexpr double ClassStaticConstexprDouble = 11.;
49CLASS-DAG:             static constexpr double ClassStaticConstexprLongDouble = 12.;
50CLASS-DAG:             static const N0::N1::(anonymous namespace)::Enum ClassStaticConstEnum = 8;
51CLASS-DAG:             static const N0::N1::(anonymous namespace)::ScopedEnum ClassStaticConstScopedEnum = 4;
52CLASS-DAG:             N0::N1::Class::Inner m_inner;
53CLASS-DAG:             {{(inline )?}}Class(N0::N1::(anonymous namespace)::Enum);
54CLASS-DAG:             {{(static )?}}{{(inline )?}}int StaticFunc(const N0::N1::Class &);
55CLASS-DAG:             {{(inline )?}}int PrivateFunc(const N0::N1::Class::Inner &);
56CLASS:         };
57CLASS:     }
58CLASS: }
59
60INNER: Module: {{.*}}
61INNER: namespace N0 {
62INNER:     namespace N1 {
63INNER:         class Class : public N0::N1::Base {
64INNER:             struct Inner {
65INNER:                 char x;
66INNER:                 short y;
67INNER:                 int z;
68INNER:             };
69INNER:         };
70INNER:     }
71INNER: }
72
73TEMPLATE: Module: {{.*}}
74TEMPLATE: struct Template<N0::N1::Class> {
75TEMPLATE:     void TemplateFunc<1>();
76TEMPLATE: };
77
78FOO: Module: {{.*}}
79FOO: namespace N0 {
80FOO:     namespace N1 {
81FOO:         void foo();
82FOO:     }
83FOO: }
84
85MAIN: Module: {{.*}}
86MAIN: int main();
87