1REQUIRES: system-windows, msvc 2RUN: %build --compiler=msvc --nodefaultlib --output=%t.exe %S/Inputs/AstRestoreTest.cpp 3RUN: env LLDB_USE_NATIVE_PDB_READER=0 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: env LLDB_USE_NATIVE_PDB_READER=0 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: Module: {{.*}} 29GLOBAL: namespace N0 { 30GLOBAL: namespace N1 { 31GLOBAL: N0::N1::(anonymous namespace)::Enum Global; 32GLOBAL: } 33GLOBAL: } 34 35BASE: Module: {{.*}} 36BASE: namespace N0 { 37BASE: namespace N1 { 38BASE: struct Base { 39BASE: N0::N1::(anonymous namespace)::Enum m_e; 40BASE: }; 41BASE: } 42BASE: } 43 44CLASS: Module: {{.*}} 45CLASS: namespace N0 { 46CLASS: namespace N1 { 47CLASS: class Class : public N0::N1::Base { 48CLASS-DAG: const N0::N1::(anonymous namespace)::Enum m_ce; 49CLASS-DAG: static int ClassStatic; 50CLASS-DAG: static const int ClassStaticConst = 8; 51CLASS-DAG: static const int ClassStaticConstexpr = 9; 52CLASS-DAG: static constexpr float ClassStaticConstexprFloat = 10.F; 53CLASS-DAG: static constexpr double ClassStaticConstexprDouble = 11.; 54CLASS-DAG: static constexpr double ClassStaticConstexprLongDouble = 12.; 55CLASS-DAG: static const N0::N1::(anonymous namespace)::Enum ClassStaticConstEnum = 8; 56CLASS-DAG: static const N0::N1::(anonymous namespace)::ScopedEnum ClassStaticConstScopedEnum = 4; 57CLASS-DAG: N0::N1::Class::Inner m_inner; 58CLASS-DAG: {{(inline )?}}Class(N0::N1::(anonymous namespace)::Enum); 59CLASS-DAG: static {{(inline )?}}int StaticFunc(const N0::N1::Class &); 60CLASS-DAG: {{(inline )?}}int PrivateFunc(const N0::N1::Class::Inner &); 61CLASS: }; 62CLASS: } 63CLASS: } 64 65INNER: Module: {{.*}} 66INNER: namespace N0 { 67INNER: namespace N1 { 68INNER: class Class : public N0::N1::Base { 69INNER: struct Inner { 70INNER: char x; 71INNER: short y; 72INNER: int z; 73INNER: }; 74INNER: }; 75INNER: } 76INNER: } 77 78TEMPLATE: Module: {{.*}} 79TEMPLATE: struct Template<N0::N1::Class> { 80TEMPLATE: inline void TemplateFunc<1>(); 81TEMPLATE: }; 82 83FOO: Module: {{.*}} 84FOO: namespace N0 { 85FOO: namespace N1 { 86FOO: void foo(); 87FOO: } 88FOO: } 89 90MAIN: Module: {{.*}} 91MAIN: int main(); 92