blob: d938c79eae33a1a50c231fca522acbd8e848d6d9 [file] [log] [blame]
Douglas Gregor01dfea02010-01-10 23:08:15 +00001struct X { int x; };
2void z(int);
3typedef struct t TYPEDEF;
4
5void foo() {
6 int y = 17;
7 // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:6:14 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
Douglas Gregorab0b4f12010-01-13 23:24:38 +00008 // 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-id#>>(<#expression#>)
13 // CHECK-CC1: COMPLETION: Pattern : delete <#expression#>
14 // CHECK-CC1-NEXT: COMPLETION: Pattern : delete[] <#expression#>
15 // CHECK-CC1-NEXT: COMPLETION: Pattern : do{<#statements#>
16 // CHECK-CC1: COMPLETION: double
17 // CHECK-CC1-NEXT: COMPLETION: Pattern : dynamic_cast<<#type-id#>>(<#expression#>)
18 // CHECK-CC1-NEXT: COMPLETION: enum
19 // CHECK-CC1-NEXT: COMPLETION: extern
20 // CHECK-CC1-NEXT: COMPLETION: 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#>){<#statements#>
24 // CHECK-CC1: COMPLETION: Pattern : goto <#identifier#>;
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-id#>(<#expressions#>)
29 // CHECK-CC1-NEXT: COMPLETION: Pattern : new <#type-id#>[<#size#>](<#expressions#>)
30 // CHECK-CC1-NEXT: COMPLETION: operator
31 // CHECK-CC1-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type-id#>>(<#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 : sizeof(<#expression-or-type#>)
36 // CHECK-CC1-NEXT: COMPLETION: static
37 // CHECK-CC1-NEXT: COMPLETION: Pattern : static_cast<<#type-id#>>(<#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 : throw <#expression#>
42 // CHECK-CC1-NEXT: COMPLETION: true
43 // CHECK-CC1-NEXT: COMPLETION: Pattern : try{<#statements#>
44 // CHECK-CC1: COMPLETION: TYPEDEF : TYPEDEF
45 // CHECK-CC1-NEXT: COMPLETION: typedef
46 // CHECK-CC1-NEXT: COMPLETION: Pattern : typeid(<#expression-or-type#>)
47 // CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#qualified-id#>
48 // CHECK-CC1-NEXT: COMPLETION: Pattern : typeof(<#expression-or-type#>)
49 // CHECK-CC1-NEXT: COMPLETION: union
50 // CHECK-CC1-NEXT: COMPLETION: unsigned
51 // CHECK-CC1-NEXT: COMPLETION: Pattern : using namespace <#identifier#>;
52 // CHECK-CC1-NEXT: COMPLETION: void
53 // CHECK-CC1-NEXT: COMPLETION: volatile
54 // CHECK-CC1-NEXT: COMPLETION: wchar_t
55 // CHECK-CC1-NEXT: COMPLETION: Pattern : while(<#condition#>){<#statements#>
56 // CHECK-CC1: COMPLETION: X : X
57 // CHECK-CC1-NEXT: COMPLETION: y : [#int#]y
58 // CHECK-CC1-NEXT: COMPLETION: z : [#void#]z(<#int#>)
59
Douglas Gregor01dfea02010-01-10 23:08:15 +000060 // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:4:1 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
Douglas Gregorab0b4f12010-01-13 23:24:38 +000061 // CHECK-CC2: COMPLETION: Pattern : asm(<#string-literal#>);
62 // CHECK-CC2-NEXT: COMPLETION: bool
63 // CHECK-CC2-NEXT: COMPLETION: char
64 // CHECK-CC2-NEXT: COMPLETION: class
65 // CHECK-CC2-NEXT: COMPLETION: const
66 // CHECK-CC2-NEXT: COMPLETION: double
67 // CHECK-CC2-NEXT: COMPLETION: enum
68 // CHECK-CC2-NEXT: COMPLETION: extern
69 // CHECK-CC2-NEXT: COMPLETION: float
70 // CHECK-CC2-NEXT: COMPLETION: inline
71 // CHECK-CC2-NEXT: COMPLETION: int
72 // CHECK-CC2-NEXT: COMPLETION: long
73 // CHECK-CC2-NEXT: COMPLETION: Pattern : namespace <#identifier#>{<#declarations#>
74 // CHECK-CC2: COMPLETION: Pattern : namespace <#identifier#> = <#identifier#>;
75 // CHECK-CC2-NEXT: COMPLETION: operator
76 // CHECK-CC2-NEXT: COMPLETION: short
77 // CHECK-CC2-NEXT: COMPLETION: signed
78 // CHECK-CC2-NEXT: COMPLETION: static
79 // CHECK-CC2-NEXT: COMPLETION: struct
80 // CHECK-CC2-NEXT: COMPLETION: t : t
81 // CHECK-CC2-NEXT: COMPLETION: Pattern : template <#declaration#>;
82 // CHECK-CC2-NEXT: COMPLETION: Pattern : template<<#parameters#>>
83 // CHECK-CC2-NEXT: COMPLETION: TYPEDEF : TYPEDEF
84 // CHECK-CC2-NEXT: COMPLETION: typedef
85 // CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#qualified-id#>
86 // CHECK-CC2-NEXT: COMPLETION: Pattern : typeof(<#expression-or-type#>)
87 // CHECK-CC2-NEXT: COMPLETION: union
88 // CHECK-CC2-NEXT: COMPLETION: unsigned
89 // CHECK-CC2-NEXT: COMPLETION: Pattern : using namespace <#identifier#>;
90 // CHECK-CC2-NEXT: COMPLETION: Pattern : using <#qualified-id#>;
91 // CHECK-CC2-NEXT: COMPLETION: void
92 // CHECK-CC2-NEXT: COMPLETION: volatile
93 // CHECK-CC2-NEXT: COMPLETION: wchar_t
94 // CHECK-CC2-NEXT: COMPLETION: X : X
95
Douglas Gregor01dfea02010-01-10 23:08:15 +000096 // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:1:19 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
Douglas Gregorab0b4f12010-01-13 23:24:38 +000097 // CHECK-CC3: COMPLETION: bool
98 // CHECK-CC3-NEXT: COMPLETION: char
99 // CHECK-CC3-NEXT: COMPLETION: class
100 // CHECK-CC3-NEXT: COMPLETION: const
101 // CHECK-CC3-NEXT: COMPLETION: double
102 // CHECK-CC3-NEXT: COMPLETION: enum
103 // CHECK-CC3-NEXT: COMPLETION: explicit
104 // CHECK-CC3-NEXT: COMPLETION: extern
105 // CHECK-CC3-NEXT: COMPLETION: float
106 // CHECK-CC3-NEXT: COMPLETION: friend
107 // CHECK-CC3-NEXT: COMPLETION: inline
108 // CHECK-CC3-NEXT: COMPLETION: int
109 // CHECK-CC3-NEXT: COMPLETION: long
110 // CHECK-CC3-NEXT: COMPLETION: mutable
111 // CHECK-CC3-NEXT: COMPLETION: operator
112 // CHECK-CC3-NEXT: COMPLETION: Pattern : private:
113 // CHECK-CC3-NEXT: COMPLETION: Pattern : protected:
114 // CHECK-CC3-NEXT: COMPLETION: Pattern : public:
115 // CHECK-CC3-NEXT: COMPLETION: short
116 // CHECK-CC3-NEXT: COMPLETION: signed
117 // CHECK-CC3-NEXT: COMPLETION: static
118 // CHECK-CC3-NEXT: COMPLETION: struct
119 // CHECK-CC3-NEXT: COMPLETION: Pattern : template<<#parameters#>>
120 // CHECK-CC3-NEXT: COMPLETION: typedef
121 // CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#qualified-id#>
122 // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof(<#expression-or-type#>)
123 // CHECK-CC3-NEXT: COMPLETION: union
124 // CHECK-CC3-NEXT: COMPLETION: unsigned
125 // CHECK-CC3-NEXT: COMPLETION: Pattern : using <#qualified-id#>;
126 // CHECK-CC3-NEXT: COMPLETION: virtual
127 // CHECK-CC3-NEXT: COMPLETION: void
128 // CHECK-CC3-NEXT: COMPLETION: volatile
129 // CHECK-CC3-NEXT: COMPLETION: wchar_t
130 // CHECK-CC3-NEXT: COMPLETION: X : X
131
Douglas Gregor01dfea02010-01-10 23:08:15 +0000132 // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:6:11 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
Douglas Gregorab0b4f12010-01-13 23:24:38 +0000133 // CHECK-CC4: COMPLETION: bool
134 // CHECK-CC4-NEXT: COMPLETION: char
135 // CHECK-CC4-NEXT: COMPLETION: class
136 // CHECK-CC4-NEXT: COMPLETION: const
137 // CHECK-CC4-NEXT: COMPLETION: Pattern : const_cast<<#type-id#>>(<#expression#>)
138 // CHECK-CC4-NEXT: COMPLETION: Pattern : delete <#expression#>
139 // CHECK-CC4-NEXT: COMPLETION: Pattern : delete[] <#expression#>
140 // CHECK-CC4-NEXT: COMPLETION: double
141 // CHECK-CC4-NEXT: COMPLETION: Pattern : dynamic_cast<<#type-id#>>(<#expression#>)
142 // CHECK-CC4-NEXT: COMPLETION: enum
143 // CHECK-CC4-NEXT: COMPLETION: false
144 // CHECK-CC4-NEXT: COMPLETION: float
145 // CHECK-CC4-NEXT: COMPLETION: foo : [#void#]foo()
146 // CHECK-CC4-NEXT: COMPLETION: int
147 // CHECK-CC4-NEXT: COMPLETION: long
148 // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type-id#>(<#expressions#>)
149 // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type-id#>[<#size#>](<#expressions#>)
150 // CHECK-CC4-NEXT: COMPLETION: operator
151 // CHECK-CC4-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type-id#>>(<#expression#>)
152 // CHECK-CC4-NEXT: COMPLETION: short
153 // CHECK-CC4-NEXT: COMPLETION: signed
154 // CHECK-CC4-NEXT: COMPLETION: Pattern : sizeof(<#expression-or-type#>)
155 // CHECK-CC4-NEXT: COMPLETION: Pattern : static_cast<<#type-id#>>(<#expression#>)
156 // CHECK-CC4-NEXT: COMPLETION: struct
157 // CHECK-CC4-NEXT: COMPLETION: t : t
158 // CHECK-CC4-NEXT: COMPLETION: Pattern : throw <#expression#>
159 // CHECK-CC4-NEXT: COMPLETION: true
160 // CHECK-CC4-NEXT: COMPLETION: TYPEDEF : TYPEDEF
161 // CHECK-CC4-NEXT: COMPLETION: Pattern : typeid(<#expression-or-type#>)
162 // CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#qualified-id#>
163 // CHECK-CC4-NEXT: COMPLETION: Pattern : typeof(<#expression-or-type#>)
164 // CHECK-CC4-NEXT: COMPLETION: union
165 // CHECK-CC4-NEXT: COMPLETION: unsigned
166 // CHECK-CC4-NEXT: COMPLETION: void
167 // CHECK-CC4-NEXT: COMPLETION: volatile
168 // CHECK-CC4-NEXT: COMPLETION: wchar_t
169 // CHECK-CC4-NEXT: COMPLETION: X : X
170 // CHECK-CC4-NEXT: COMPLETION: y : [#int#]y
171 // CHECK-CC4-NEXT: COMPLETION: z : [#void#]z(<#int#>)