1; REQUIRES: diasdk
2
3; RUN: llvm-pdbutil pretty -module-syms -globals -types %p/Inputs/FilterTest.pdb \
4; RUN:    | FileCheck --check-prefix=NO_FILTER %s
5
6; RUN: llvm-pdbutil pretty -types -exclude-types="GlobalTypedef|NestedTypedef" \
7; RUN:    %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_TYPEDEFS %s
8; RUN: llvm-pdbutil pretty -classes -enums %p/Inputs/FilterTest.pdb \
9; RUN:    | FileCheck --check-prefix=EXCLUDE_TYPEDEFS %s
10
11; RUN: llvm-pdbutil pretty -types -exclude-types="GlobalEnum|NestedEnum" \
12; RUN:    %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_ENUMS %s
13; RUN: llvm-pdbutil pretty -classes -typedefs %p/Inputs/FilterTest.pdb \
14; RUN:    | FileCheck --check-prefix=EXCLUDE_ENUMS %s
15
16; RUN: llvm-pdbutil pretty -types -module-syms -globals -exclude-symbols="MemberVar|GlobalVar" \
17; RUN:    %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=EXCLUDE_VARS %s
18; RUN: llvm-pdbutil pretty -classes -exclude-types="FilterTestClass" \
19; RUN:    %p/Inputs/FilterTest.pdb | FileCheck  --check-prefix=EXCLUDE_WHOLE_CLASS %s
20; RUN: llvm-pdbutil pretty -module-syms -globals -exclude-compilands="FilterTest.obj"  \
21; RUN:    %p/Inputs/FilterTest.pdb | FileCheck  --check-prefix=EXCLUDE_COMPILAND %s
22; RUN: llvm-pdbutil pretty -types -include-types="FilterTestClass" \
23; RUN:    %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=INCLUDE_ONLY_TYPES %s
24; RUN: llvm-pdbutil pretty -types -module-syms -globals -include-symbols="[[:<:]](IntGlobalVar|DoubleGlobalVar)[[:>:]]" \
25; RUN:    %p/Inputs/FilterTest.pdb | FileCheck --check-prefix=INCLUDE_ONLY_VARS %s
26
27; NO_FILTER: ---TYPES---
28; NO_FILTER: Enums:
29; NO_FILTER: enum GlobalEnum
30; NO_FILTER: Typedefs
31; NO_FILTER: typedef int GlobalTypedef
32; NO_FILTER: Classes:
33; NO_FILTER: struct __vc_attributes
34; NO_FILTER: class FilterTestClass
35; NO_FILTER-DAG: typedef int NestedTypedef
36; NO_FILTER-DAG: enum NestedEnum
37; NO_FILTER-DAG: int IntMemberVar
38; NO_FILTER-DAG: double DoubleMemberVar
39; NO_FILTER: ---SYMBOLS---
40; NO_FILTER: Inputs\FilterTest.obj
41; NO_FILTER: int __cdecl main(int argc, char** argv)
42; NO_FILTER: ---GLOBALS---
43; NO_FILTER-DAG: double DoubleGlobalVar
44; NO_FILTER-DAG: int IntGlobalVar
45; NO_FILTER-DAG: GlobalEnum GlobalEnumVar
46
47; EXCLUDE_TYPEDEFS: ---TYPES---
48; EXCLUDE_TYPEDEFS-NOT: GlobalTypedef
49; EXCLUDE_TYPEDEFS-NOT: NestedTypedef
50; EXCLUDE_TYPEDEFS-DAG: GlobalEnum
51; EXCLUDE_TYPEDEFS-DAG: NestedEnum
52; EXCLUDE_TYPEDEFS: class FilterTestClass
53
54; EXCLUDE_ENUMS: ---TYPES---
55; EXCLUDE_ENUMS-NOT: GlobalEnum
56; EXCLUDE_ENUMS-NOT: NestedEnum
57; EXCLUDE_ENUMS: GlobalTypedef
58; EXCLUDE_ENUMS: class FilterTestClass
59
60; EXCLUDE_VARS: ---TYPES---
61; EXCLUDE_VARS-NOT: IntMemberVar
62; EXCLUDE_VARS-NOT: DoubleMemberVar
63; EXCLUDE_VARS-DAG: GlobalEnum
64; EXCLUDE_VARS-DAG: NestedEnum
65; EXCLUDE_VARS: GlobalTypedef
66; EXCLUDE_VARS: class FilterTestClass
67; EXCLUDE_VARS: ---GLOBALS---
68; EXCLUDE_VARS-NOT: DoubleGlobalVar
69; EXCLUDE_VARS-NOT: IntGlobalVar
70
71; EXCLUDE_WHOLE_CLASS: ---TYPES---
72; EXCLUDE_WHOLE_CLASS-NOT: class FilterTestClass
73
74; EXCLUDE_COMPILAND: ---SYMBOLS---
75; EXCLUDE_COMPILAND-NOT: FilterTest.obj
76; EXCLUDE_COMPILAND-NOT: __cdecl main
77; EXCLUDE_COMPILAND: * Linker *
78; EXCLUDE_COMPILAND: ---GLOBALS---
79
80; Everything but types are displayed normally.  But FilterTestClass is
81; the only type that should be displayed.
82; INCLUDE_ONLY_TYPES: ---TYPES---
83; INCLUDE_ONLY_TYPES-NOT: GlobalTypedef
84; INCLUDE_ONLY_TYPES: class FilterTestClass
85
86; We should only see DoubleGlobalVar and IntGlobalVar.  This means that even
87; variables printed in class definitions should be filtered out.
88; INCLUDE_ONLY_VARS: ---TYPES---
89; INCLUDE_ONLY_VARS: class FilterTestClass
90; INCLUDE_ONLY_VARS-NOT: IntMemberVar
91; INCLUDE_ONLY_VARS-NOT: IntDoubleVar
92; INCLUDE_ONLY_VARS: ---GLOBALS---
93; INCLUDE_ONLY_VARS: DoubleGlobalVar
94; INCLUDE_ONLY_VARS: IntGlobalVar
95