Clang Project

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