Clang Project

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