1*67e74705SXin Li struct X { int x; };
2*67e74705SXin Li void z(int);
3*67e74705SXin Li typedef struct t TYPEDEF;
4*67e74705SXin Li
foo()5*67e74705SXin Li void foo() {
6*67e74705SXin Li int y = 17;
7*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -code-completion-patterns -code-completion-at=%s:6:14 -std=gnu++11 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
8*67e74705SXin Li // CHECK-CC1: COMPLETION: bool
9*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: char
10*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: char16
11*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: char32
12*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: class
13*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: const
14*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
15*67e74705SXin Li // CHECK-CC1: COMPLETION: Pattern : [#void#]delete <#expression#>
16*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
17*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : do{<#statements#>
18*67e74705SXin Li // CHECK-CC1: COMPLETION: double
19*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
20*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: enum
21*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: extern
22*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]false
23*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: float
24*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: foo : [#void#]foo()
25*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : for(<#init-statement#>;<#condition#>;<#inc-expression#>){
26*67e74705SXin Li // CHECK-CC1: COMPLETION: Pattern : goto <#label#>
27*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : if(<#condition#>){<#statements#>
28*67e74705SXin Li // CHECK-CC1: COMPLETION: int
29*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: long
30*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
31*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
32*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]noexcept(<#expression#>)
33*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#std::nullptr_t#]nullptr
34*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: operator
35*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
36*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : return
37*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: short
38*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: signed
39*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
40*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#size_t#]sizeof...(<#parameter-pack#>)
41*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: static
42*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
43*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: struct
44*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : switch(<#condition#>){
45*67e74705SXin Li // CHECK-CC1: COMPLETION: t : t
46*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#>
47*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]true
48*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : try{<#statements#>
49*67e74705SXin Li // CHECK-CC1: COMPLETION: TYPEDEF : TYPEDEF
50*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
51*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
52*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
53*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : typeof <#expression#>
54*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : typeof(<#type#>)
55*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: union
56*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: unsigned
57*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : using namespace <#identifier#>
58*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: void
59*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: volatile
60*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: wchar_t
61*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: Pattern : while(<#condition#>){<#statements#>
62*67e74705SXin Li // CHECK-CC1: COMPLETION: X : X
63*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: y : [#int#]y
64*67e74705SXin Li // CHECK-CC1-NEXT: COMPLETION: z : [#void#]z(<#int#>)
65*67e74705SXin Li
66*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:4:1 -std=gnu++11 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
67*67e74705SXin Li // CHECK-CC2: COMPLETION: Pattern : asm(<#string-literal#>)
68*67e74705SXin Li // CHECK-CC2: COMPLETION: auto
69*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: bool
70*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: char
71*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: char16
72*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: char32
73*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: class
74*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: const
75*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : decltype(<#expression#>)
76*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: double
77*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: enum
78*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: extern
79*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: float
80*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: inline
81*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: int
82*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: long
83*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : namespace <#identifier#>{<#declarations#>
84*67e74705SXin Li // CHECK-CC2: COMPLETION: Pattern : namespace <#name#> = <#namespace#>
85*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: operator
86*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: short
87*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: signed
88*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: static
89*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: struct
90*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: t : t
91*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : template <#declaration#>
92*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : template<<#parameters#>>
93*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: TYPEDEF : TYPEDEF
94*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
95*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
96*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : typeof <#expression#>
97*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : typeof(<#type#>)
98*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: union
99*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: unsigned
100*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : using namespace <#identifier#>
101*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: Pattern : using <#qualifier#>::<#name#>
102*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: void
103*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: volatile
104*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: wchar_t
105*67e74705SXin Li // CHECK-CC2-NEXT: COMPLETION: X : X
106*67e74705SXin Li
107*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:1:19 -std=gnu++11 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
108*67e74705SXin Li // CHECK-CC3: COMPLETION: bool
109*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: char
110*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: char16_t
111*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: char32_t
112*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: class
113*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: const
114*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : decltype(<#expression#>)
115*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: double
116*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: enum
117*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: explicit
118*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: extern
119*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: float
120*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: friend
121*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: inline
122*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: int
123*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: long
124*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: mutable
125*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: operator
126*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : private:
127*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : protected:
128*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : public:
129*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: short
130*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: signed
131*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: static
132*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: struct
133*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : template<<#parameters#>>
134*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
135*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
136*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof <#expression#>
137*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof(<#type#>)
138*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: union
139*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: unsigned
140*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: Pattern : using <#qualifier#>::<#name#>
141*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: virtual
142*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: void
143*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: volatile
144*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: wchar_t
145*67e74705SXin Li // CHECK-CC3-NEXT: COMPLETION: X : X
146*67e74705SXin Li
147*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -code-completion-patterns -code-completion-at=%s:6:11 -std=gnu++11 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
148*67e74705SXin Li // CHECK-CC4: COMPLETION: bool
149*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: char
150*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: char16_t
151*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: char32_t
152*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: class
153*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: const
154*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
155*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : decltype(<#expression#>)
156*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]delete <#expression#>
157*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
158*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: double
159*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
160*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: enum
161*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]false
162*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: float
163*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: foo : [#void#]foo()
164*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: int
165*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: long
166*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
167*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
168*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]noexcept(<#expression#>)
169*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#std::nullptr_t#]nullptr
170*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: operator
171*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
172*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: short
173*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: signed
174*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
175*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#size_t#]sizeof...(<#parameter-pack#>)
176*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
177*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: struct
178*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: t : t
179*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#>
180*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]true
181*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: TYPEDEF : TYPEDEF
182*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
183*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
184*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : typeof <#expression#>
185*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: Pattern : typeof(<#type#>)
186*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: union
187*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: unsigned
188*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: void
189*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: volatile
190*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: wchar_t
191*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: X : X
192*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: y : [#int#]y
193*67e74705SXin Li // CHECK-CC4-NEXT: COMPLETION: z : [#void#]z(<#int#>)
194*67e74705SXin Li
195*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -fno-rtti -code-completion-patterns -code-completion-at=%s:6:14 -std=gnu++11 %s -o - | FileCheck -check-prefix=CHECK-NO-RTTI %s
196*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: bool
197*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: char
198*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: char16_t
199*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: char32_t
200*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: class
201*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: const
202*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
203*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: Pattern : [#void#]delete <#expression#>
204*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
205*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : do{<#statements#>
206*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: double
207*67e74705SXin Li // CHECK-NO-RTTI-NOT: dynamic_cast
208*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: enum
209*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: extern
210*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#bool#]false
211*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: float
212*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: foo : [#void#]foo()
213*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : for(<#init-statement#>;<#condition#>;<#inc-expression#>){
214*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: Pattern : goto <#label#>
215*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : if(<#condition#>){<#statements#>
216*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: int
217*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: long
218*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
219*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
220*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#bool#]noexcept(<#expression#>)
221*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#std::nullptr_t#]nullptr
222*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: operator
223*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
224*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : return
225*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: short
226*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: signed
227*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
228*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#size_t#]sizeof...(<#parameter-pack#>)
229*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: static
230*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
231*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: struct
232*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : switch(<#condition#>){
233*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: t : t
234*67e74705SXin Li // CHECK-NO-RTTI-NOT: throw
235*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: Pattern : [#bool#]true
236*67e74705SXin Li // CHECK-NO-RTTI-NOT: try
237*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: TYPEDEF : TYPEDEF
238*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
239*67e74705SXin Li // CHECK-NO-RTTI-NOT: typeid
240*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
241*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof <#expression#>
242*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof(<#type#>)
243*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: union
244*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: unsigned
245*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : using namespace <#identifier#>
246*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: void
247*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: volatile
248*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: wchar_t
249*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : while(<#condition#>){<#statements#>
250*67e74705SXin Li // CHECK-NO-RTTI: COMPLETION: X : X
251*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: y : [#int#]y
252*67e74705SXin Li // CHECK-NO-RTTI-NEXT: COMPLETION: z : [#void#]z(<#int#>)
253