OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:collection'; | 6 import 'dart:collection'; |
7 | 7 |
8 import 'package:test/test.dart'; | 8 import 'package:test/test.dart'; |
9 | 9 |
10 import 'completion_test_support.dart'; | 10 import 'completion_test_support.dart'; |
(...skipping 22 matching lines...) Expand all Loading... |
33 buildCommentSnippetTests(); | 33 buildCommentSnippetTests(); |
34 buildCompletionTests(); | 34 buildCompletionTests(); |
35 buildOtherTests(); | 35 buildOtherTests(); |
36 buildLibraryTests(); | 36 buildLibraryTests(); |
37 int testCount = expectedPassCount + expectedFailCount; | 37 int testCount = expectedPassCount + expectedFailCount; |
38 print( | 38 print( |
39 'Total $testCount tests, of which $expectedFailCount are expected to fai
l.'); | 39 'Total $testCount tests, of which $expectedFailCount are expected to fai
l.'); |
40 } | 40 } |
41 | 41 |
42 void buildCommentSnippetTests() { | 42 void buildCommentSnippetTests() { |
43 buildTests( | 43 buildTests('testCommentSnippets001', ''' |
44 'testCommentSnippets001', | |
45 ''' | |
46 class X {static final num MAX = 0;num yc,xc;mth() {xc = yc = MA!1X;x!2c.abs();nu
m f = M!3AX;}}''', | 44 class X {static final num MAX = 0;num yc,xc;mth() {xc = yc = MA!1X;x!2c.abs();nu
m f = M!3AX;}}''', |
47 <String>["1+MAX", "2+xc", "3+MAX"]); | 45 <String>["1+MAX", "2+xc", "3+MAX"]); |
48 | 46 |
49 buildTests( | 47 buildTests('testCommentSnippets002', ''' |
50 'testCommentSnippets002', | |
51 ''' | |
52 class Y {String x='hi';mth() {x.l!1ength;int n = 0;x!2.codeUnitAt(n!3);}}''', | 48 class Y {String x='hi';mth() {x.l!1ength;int n = 0;x!2.codeUnitAt(n!3);}}''', |
53 <String>["1+length", "2+x", "3+n"]); | 49 <String>["1+length", "2+x", "3+n"]); |
54 | 50 |
55 buildTests( | 51 buildTests('testCommentSnippets004', ''' |
56 'testCommentSnippets004', | |
57 ''' | |
58 class A {!1int x; !2mth() {!3int y = this.!5x!6;}}class B{}''', | 52 class A {!1int x; !2mth() {!3int y = this.!5x!6;}}class B{}''', |
59 <String>["1+A", "2+B", "3+x", "3-y", "5+mth", "6+x"]); | 53 <String>["1+A", "2+B", "3+x", "3-y", "5+mth", "6+x"]); |
60 | 54 |
61 buildTests( | 55 buildTests('testCommentSnippets005', ''' |
62 'testCommentSnippets005', | |
63 ''' | |
64 class Date { static Date JUN, JUL;}class X { m() { return Da!1te.JU!2L; }}''', | 56 class Date { static Date JUN, JUL;}class X { m() { return Da!1te.JU!2L; }}''', |
65 <String>["1+Date", "2+JUN", "2+JUL"]); | 57 <String>["1+Date", "2+JUN", "2+JUL"]); |
66 | 58 |
67 buildTests( | 59 buildTests('testCommentSnippets007', ''' |
68 'testCommentSnippets007', | |
69 ''' | |
70 class C {mth(Map x, !1) {}mtf(!2, Map x) {}m() {for (in!3t i=0; i<5; i++); A!4 x
;}}class int{}class Arrays{}''', | 60 class C {mth(Map x, !1) {}mtf(!2, Map x) {}m() {for (in!3t i=0; i<5; i++); A!4 x
;}}class int{}class Arrays{}''', |
71 <String>["1+bool", "2+bool", "3+int", "4+Arrays"]); | 61 <String>["1+bool", "2+bool", "3+int", "4+Arrays"]); |
72 | 62 |
73 buildTests( | 63 buildTests('testCommentSnippets008', ''' |
74 'testCommentSnippets008', | 64 class Date{}final num M = Dat!1''', <String>["1+Date"]); |
75 ''' | |
76 class Date{}final num M = Dat!1''', | |
77 <String>["1+Date"]); | |
78 | 65 |
79 // space, char, eol are important | 66 // space, char, eol are important |
80 buildTests( | 67 buildTests( |
81 'testCommentSnippets009', | 68 'testCommentSnippets009', |
82 ''' | 69 ''' |
83 class Maps{}class x extends!5 !2M!3 !4implements!6 !1\n{}''', | 70 class Maps{}class x extends!5 !2M!3 !4implements!6 !1\n{}''', |
84 <String>[ | 71 <String>[ |
85 "1+Map", | 72 "1+Map", |
86 "2+Maps", | 73 "2+Maps", |
87 "3+Maps", | 74 "3+Maps", |
88 "4-Maps", | 75 "4-Maps", |
89 "4+implements", | 76 "4+implements", |
90 "5-Maps", | 77 "5-Maps", |
91 "6-Map", | 78 "6-Map", |
92 "6+implements" | 79 "6+implements" |
93 ], | 80 ], |
94 failingTests: '46'); | 81 failingTests: '46'); |
95 | 82 |
96 // space, char, eol are important | 83 // space, char, eol are important |
97 buildTests( | 84 buildTests('testCommentSnippets010', ''' |
98 'testCommentSnippets010', | 85 class x implements !1{}''', <String>["1+Map"]); |
99 ''' | |
100 class x implements !1{}''', | |
101 <String>["1+Map"]); | |
102 | 86 |
103 // space, char, eol are important | 87 // space, char, eol are important |
104 buildTests( | 88 buildTests('testCommentSnippets011', ''' |
105 'testCommentSnippets011', | 89 class x implements M!1{}''', <String>["1+Map"]); |
106 ''' | |
107 class x implements M!1{}''', | |
108 <String>["1+Map"]); | |
109 | 90 |
110 // space, char, eol are important | 91 // space, char, eol are important |
111 buildTests( | 92 buildTests('testCommentSnippets012', ''' |
112 'testCommentSnippets012', | 93 class x implements M!1\n{}''', <String>["1+Map"]); |
113 ''' | |
114 class x implements M!1\n{}''', | |
115 <String>["1+Map"]); | |
116 | 94 |
117 buildTests( | 95 buildTests('testCommentSnippets013', ''' |
118 'testCommentSnippets013', | 96 class x !2{!1}!3''', <String>["1+num", "2-num", "3+num"]); |
119 ''' | |
120 class x !2{!1}!3''', | |
121 <String>["1+num", "2-num", "3+num"]); | |
122 | 97 |
123 // trailing space is important | 98 // trailing space is important |
124 buildTests( | 99 buildTests('testCommentSnippets014', ''' |
125 'testCommentSnippets014', | 100 typedef n!1 ;''', <String>["1+num"]); |
126 ''' | |
127 typedef n!1 ;''', | |
128 <String>["1+num"]); | |
129 | 101 |
130 buildTests( | 102 buildTests('testCommentSnippets015', ''' |
131 'testCommentSnippets015', | 103 class D {f(){} g(){f!1(f!2);}}''', <String>["1+f", "2+f"]); |
132 ''' | |
133 class D {f(){} g(){f!1(f!2);}}''', | |
134 <String>["1+f", "2+f"]); | |
135 | 104 |
136 buildTests( | 105 buildTests('testCommentSnippets016', ''' |
137 'testCommentSnippets016', | 106 class F {m() { m(); !1}}''', <String>["1+m"]); |
138 ''' | |
139 class F {m() { m(); !1}}''', | |
140 <String>["1+m"]); | |
141 | 107 |
142 buildTests( | 108 buildTests('testCommentSnippets017', ''' |
143 'testCommentSnippets017', | 109 class F {var x = !1false;}''', <String>["1+true"]); |
144 ''' | |
145 class F {var x = !1false;}''', | |
146 <String>["1+true"]); | |
147 | 110 |
148 buildTests( | 111 buildTests('testCommentSnippets018', ''' |
149 'testCommentSnippets018', | |
150 ''' | |
151 class Map{}class Arrays{}class C{ m(!1){} n(!2 x, q)''', | 112 class Map{}class Arrays{}class C{ m(!1){} n(!2 x, q)''', |
152 <String>["1+Map", "1-void", "1-null", "2+Arrays", "2-void", "2-null"]); | 113 <String>["1+Map", "1-void", "1-null", "2+Arrays", "2-void", "2-null"]); |
153 | 114 |
154 buildTests( | 115 buildTests('testCommentSnippets019', ''' |
155 'testCommentSnippets019', | 116 class A{m(){Object x;x.!1/**/clear()''', <String>["1+toString"]); |
156 ''' | |
157 class A{m(){Object x;x.!1/**/clear()''', | |
158 <String>["1+toString"]); | |
159 | 117 |
160 buildTests( | 118 buildTests('testCommentSnippets020', ''' |
161 'testCommentSnippets020', | |
162 ''' | |
163 classMap{}class tst {var newt;void newf(){}test() {var newz;new!1/**/;}}''', | 119 classMap{}class tst {var newt;void newf(){}test() {var newz;new!1/**/;}}''', |
164 <String>["1+newt", "1+newf", "1+newz", "1-Map"]); | 120 <String>["1+newt", "1+newf", "1+newz", "1-Map"]); |
165 | 121 |
166 buildTests( | 122 buildTests('testCommentSnippets021', ''' |
167 'testCommentSnippets021', | |
168 ''' | |
169 class Map{}class tst {var newt;void newf(){}test() {var newz;new !1/**/;}}''', | 123 class Map{}class tst {var newt;void newf(){}test() {var newz;new !1/**/;}}''', |
170 <String>["1+Map", "1-newt"]); | 124 <String>["1+Map", "1-newt"]); |
171 | 125 |
172 buildTests( | 126 buildTests('testCommentSnippets022', ''' |
173 'testCommentSnippets022', | 127 class Map{}class F{m(){new !1;}}''', <String>["1+Map"]); |
174 ''' | |
175 class Map{}class F{m(){new !1;}}''', | |
176 <String>["1+Map"]); | |
177 | 128 |
178 buildTests( | 129 buildTests('testCommentSnippets022a', ''' |
179 'testCommentSnippets022a', | 130 class Map{}class F{m(){new !1''', <String>["1+Map"]); |
180 ''' | |
181 class Map{}class F{m(){new !1''', | |
182 <String>["1+Map"]); | |
183 | 131 |
184 buildTests( | 132 buildTests('testCommentSnippets022b', ''' |
185 'testCommentSnippets022b', | |
186 ''' | |
187 class Map{factory Map.qq(){return null;}}class F{m(){new Map.!1qq();}}''', | 133 class Map{factory Map.qq(){return null;}}class F{m(){new Map.!1qq();}}''', |
188 <String>["1+qq"]); | 134 <String>["1+qq"]); |
189 | 135 |
190 buildTests( | 136 buildTests('testCommentSnippets023', ''' |
191 'testCommentSnippets023', | |
192 ''' | |
193 class X {X c; X(this.!1c!3) : super() {c.!2}}''', | 137 class X {X c; X(this.!1c!3) : super() {c.!2}}''', |
194 <String>["1+c", "2+c", "3+c"]); | 138 <String>["1+c", "2+c", "3+c"]); |
195 | 139 |
196 buildTests( | 140 buildTests('testCommentSnippets024', ''' |
197 'testCommentSnippets024', | 141 class q {m(Map q){var x;m(!1)}n(){var x;n(!2)}}''', <String>["1+x", "2+x"]); |
198 ''' | |
199 class q {m(Map q){var x;m(!1)}n(){var x;n(!2)}}''', | |
200 <String>["1+x", "2+x"]); | |
201 | 142 |
202 buildTests( | 143 buildTests('testCommentSnippets025', ''' |
203 'testCommentSnippets025', | |
204 ''' | |
205 class q {num m() {var q; num x=!1 q!3 + !2/**/;}}''', | 144 class q {num m() {var q; num x=!1 q!3 + !2/**/;}}''', |
206 <String>["1+q", "2+q", "3+q"]); | 145 <String>["1+q", "2+q", "3+q"]); |
207 | 146 |
208 buildTests( | 147 buildTests('testCommentSnippets026', ''' |
209 'testCommentSnippets026', | 148 class List{}class a implements !1{}''', <String>["1+List"]); |
210 ''' | |
211 class List{}class a implements !1{}''', | |
212 <String>["1+List"]); | |
213 | 149 |
214 buildTests( | 150 buildTests('testCommentSnippets027', ''' |
215 'testCommentSnippets027', | |
216 ''' | |
217 class String{}class List{}class test <X extends !1String!2> {}''', | 151 class String{}class List{}class test <X extends !1String!2> {}''', |
218 <String>["1+List", "2+String", "2-List"]); | 152 <String>["1+List", "2+String", "2-List"]); |
219 | 153 |
220 buildTests( | 154 buildTests('testCommentSnippets028', ''' |
221 'testCommentSnippets028', | |
222 ''' | |
223 class String{}class List{}class DateTime{}typedef T Y<T extends !1>(List input);
''', | 155 class String{}class List{}class DateTime{}typedef T Y<T extends !1>(List input);
''', |
224 <String>["1+DateTime", "1+String"]); | 156 <String>["1+DateTime", "1+String"]); |
225 | 157 |
226 buildTests( | 158 buildTests('testCommentSnippets029', ''' |
227 'testCommentSnippets029', | |
228 ''' | |
229 interface A<X> default B<X extends !1List!2> {}''', | 159 interface A<X> default B<X extends !1List!2> {}''', |
230 <String>["1+DateTime", "2+List"]); | 160 <String>["1+DateTime", "2+List"]); |
231 | 161 |
232 buildTests( | 162 buildTests( |
233 'testCommentSnippets030', | 163 'testCommentSnippets030', |
234 ''' | 164 ''' |
235 class Bar<T extends Foo> {const Bar(!1T!2 k);T!3 m(T!4 a, T!5 b){}final T!6 f =
null;}''', | 165 class Bar<T extends Foo> {const Bar(!1T!2 k);T!3 m(T!4 a, T!5 b){}final T!6 f =
null;}''', |
236 <String>["1+T", "2+T", "3+T", "4+T", "5+T", "6+T"], | 166 <String>["1+T", "2+T", "3+T", "4+T", "5+T", "6+T"], |
237 failingTests: '123456'); | 167 failingTests: '123456'); |
238 | 168 |
239 buildTests( | 169 buildTests( |
240 'testCommentSnippets031', | 170 'testCommentSnippets031', |
241 ''' | 171 ''' |
242 class Bar<T extends Foo> {m(x){if (x is !1) return;if (x is!!!2)}}''', | 172 class Bar<T extends Foo> {m(x){if (x is !1) return;if (x is!!!2)}}''', |
243 <String>["1+Bar", "1+T", "2+T", "2+Bar"], | 173 <String>["1+Bar", "1+T", "2+T", "2+Bar"], |
244 failingTests: '12'); | 174 failingTests: '12'); |
245 | 175 |
246 buildTests( | 176 buildTests( |
247 'testCommentSnippets032', | 177 'testCommentSnippets032', |
248 ''' | 178 ''' |
249 class Fit{}class Bar<T extends Fooa> {const !2F!1ara();}''', | 179 class Fit{}class Bar<T extends Fooa> {const !2F!1ara();}''', |
250 <String>["1+Fit", "1+Fara", "1-Bar", "2+Fit"], | 180 <String>["1+Fit", "1+Fara", "1-Bar", "2+Fit"], |
251 failingTests: '1'); | 181 failingTests: '1'); |
252 | 182 |
253 // Type propagation | 183 // Type propagation |
254 buildTests( | 184 buildTests('testCommentSnippets033', ''' |
255 'testCommentSnippets033', | |
256 ''' | |
257 class List{add(){}length(){}}t1() {var x;if (x is List) {x.!1add(3);}}''', | 185 class List{add(){}length(){}}t1() {var x;if (x is List) {x.!1add(3);}}''', |
258 <String>["1+add", "1+length"]); | 186 <String>["1+add", "1+length"]); |
259 | 187 |
260 // Type propagation | 188 // Type propagation |
261 buildTests( | 189 buildTests('testCommentSnippets035', ''' |
262 'testCommentSnippets035', | |
263 ''' | |
264 class List{clear(){}length(){}}t3() {var x=new List(), y=x.!1length();x.!2clear(
);}''', | 190 class List{clear(){}length(){}}t3() {var x=new List(), y=x.!1length();x.!2clear(
);}''', |
265 <String>["1+length", "2+clear"]); | 191 <String>["1+length", "2+clear"]); |
266 | 192 |
267 buildTests( | 193 buildTests('testCommentSnippets036', ''' |
268 'testCommentSnippets036', | 194 class List{}t3() {var x=new List!1}''', <String>["1+List"]); |
269 ''' | |
270 class List{}t3() {var x=new List!1}''', | |
271 <String>["1+List"]); | |
272 | 195 |
273 buildTests( | 196 buildTests('testCommentSnippets037', ''' |
274 'testCommentSnippets037', | |
275 ''' | |
276 class List{factory List.from(){}}t3() {var x=new List.!1}''', | 197 class List{factory List.from(){}}t3() {var x=new List.!1}''', |
277 <String>["1+from"]); | 198 <String>["1+from"]); |
278 | 199 |
279 buildTests( | 200 buildTests('testCommentSnippets038', ''' |
280 'testCommentSnippets038', | 201 f(){int xa; String s = '\$x!1';}''', <String>["1+xa"]); |
281 ''' | |
282 f(){int xa; String s = '\$x!1';}''', | |
283 <String>["1+xa"]); | |
284 | 202 |
285 buildTests( | 203 buildTests('testCommentSnippets038a', ''' |
286 'testCommentSnippets038a', | 204 int xa; String s = '\$x!1\'''', <String>["1+xa"]); |
287 ''' | |
288 int xa; String s = '\$x!1\'''', | |
289 <String>["1+xa"]); | |
290 | 205 |
291 buildTests( | 206 buildTests('testCommentSnippets039', ''' |
292 'testCommentSnippets039', | 207 f(){int xa; String s = '\$!1';}''', <String>["1+xa"]); |
293 ''' | |
294 f(){int xa; String s = '\$!1';}''', | |
295 <String>["1+xa"]); | |
296 | 208 |
297 buildTests( | 209 buildTests('testCommentSnippets039a', ''' |
298 'testCommentSnippets039a', | 210 int xa; String s = '\$!1\'''', <String>["1+xa"]); |
299 ''' | |
300 int xa; String s = '\$!1\'''', | |
301 <String>["1+xa"]); | |
302 | 211 |
303 buildTests( | 212 buildTests('testCommentSnippets040', ''' |
304 'testCommentSnippets040', | |
305 ''' | |
306 class List{add(){}}class Map{}class X{m(){List list; list.!1 Map map;}}''', | 213 class List{add(){}}class Map{}class X{m(){List list; list.!1 Map map;}}''', |
307 <String>["1+add"]); | 214 <String>["1+add"]); |
308 | 215 |
309 buildTests( | 216 buildTests('testCommentSnippets041', ''' |
310 'testCommentSnippets041', | |
311 ''' | |
312 class List{add(){}length(){}}class X{m(){List list; list.!1 zox();}}''', | 217 class List{add(){}length(){}}class X{m(){List list; list.!1 zox();}}''', |
313 <String>["1+add"]); | 218 <String>["1+add"]); |
314 | 219 |
315 buildTests( | 220 buildTests('testCommentSnippets042', ''' |
316 'testCommentSnippets042', | |
317 ''' | |
318 class DateTime{static const int WED=3;int get day;}fd(){DateTime d=new DateTime.
now();d.!1WED!2;}''', | 221 class DateTime{static const int WED=3;int get day;}fd(){DateTime d=new DateTime.
now();d.!1WED!2;}''', |
319 <String>["1+day", "2-WED"]); | 222 <String>["1+day", "2-WED"]); |
320 | 223 |
321 buildTests( | 224 buildTests('testCommentSnippets043', ''' |
322 'testCommentSnippets043', | 225 class L{var k;void.!1}''', <String>["1-k"]); |
323 ''' | |
324 class L{var k;void.!1}''', | |
325 <String>["1-k"]); | |
326 | 226 |
327 buildTests( | 227 buildTests('testCommentSnippets044', ''' |
328 'testCommentSnippets044', | |
329 ''' | |
330 class List{}class XXX {XXX.fisk();}main() {main(); new !1}}''', | 228 class List{}class XXX {XXX.fisk();}main() {main(); new !1}}''', |
331 <String>["1+List", "1+XXX.fisk"]); | 229 <String>["1+List", "1+XXX.fisk"]); |
332 | 230 |
333 buildTests( | 231 buildTests('testCommentSnippets047', ''' |
334 'testCommentSnippets047', | 232 f(){int x;int y=!1;}''', <String>["1+x"]); |
335 ''' | |
336 f(){int x;int y=!1;}''', | |
337 <String>["1+x"]); | |
338 | 233 |
339 buildTests( | 234 buildTests('testCommentSnippets048', ''' |
340 'testCommentSnippets048', | 235 import 'dart:convert' as json;f() {var x=new js!1}''', <String>["1+json"]); |
341 ''' | |
342 import 'dart:convert' as json;f() {var x=new js!1}''', | |
343 <String>["1+json"]); | |
344 | 236 |
345 buildTests( | 237 buildTests('testCommentSnippets049', ''' |
346 'testCommentSnippets049', | |
347 ''' | |
348 import 'dart:convert' as json; | 238 import 'dart:convert' as json; |
349 import 'dart:convert' as jxx; | 239 import 'dart:convert' as jxx; |
350 class JsonDecoderX{} | 240 class JsonDecoderX{} |
351 f1() {var x=new !2j!1s!3}''', | 241 f1() {var x=new !2j!1s!3}''', <String>[ |
352 <String>[ | 242 "1+json", |
353 "1+json", | 243 "1+jxx", |
354 "1+jxx", | 244 "2+json", |
355 "2+json", | 245 "2+jxx", |
356 "2+jxx", | 246 "2-JsonDecoder", |
357 "2-JsonDecoder", | 247 "3+json", |
358 "3+json", | 248 "3-jxx" |
359 "3-jxx" | 249 ]); |
360 ]); | |
361 | 250 |
362 buildTests( | 251 buildTests('testCommentSnippets050', ''' |
363 'testCommentSnippets050', | |
364 ''' | |
365 class xdr { | 252 class xdr { |
366 xdr(); | 253 xdr(); |
367 const xdr.a(a,b,c); | 254 const xdr.a(a,b,c); |
368 xdr.b(); | 255 xdr.b(); |
369 f() => 3; | 256 f() => 3; |
370 } | 257 } |
371 class xa{} | 258 class xa{} |
372 k() { | 259 k() { |
373 new x!1dr().f(); | 260 new x!1dr().f(); |
374 const x!2dr.!3a(1, 2, 3); | 261 const x!2dr.!3a(1, 2, 3); |
375 }''', | 262 }''', <String>[ |
376 <String>[ | 263 "1+xdr", |
377 "1+xdr", | 264 "1+xa", |
378 "1+xa", | 265 "1+xdr.a", |
379 "1+xdr.a", | 266 "1+xdr.b", |
380 "1+xdr.b", | 267 "2+xa", // suggest default constructor |
381 "2+xa", // suggest default constructor | 268 "2+xdr", // suggest normal constructor |
382 "2+xdr", // suggest normal constructor | 269 "2+xdr.a", |
383 "2+xdr.a", | 270 "2+xdr.b", // suggest named constructor |
384 "2+xdr.b", // suggest named constructor | 271 "3+b", // suggest named constructor |
385 "3+b", // suggest named constructor | 272 "3+a" |
386 "3+a" | 273 ]); |
387 ]); | |
388 | 274 |
389 // Type propagation. | 275 // Type propagation. |
390 buildTests( | 276 buildTests('testCommentSnippets051', ''' |
391 'testCommentSnippets051', | |
392 ''' | |
393 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 277 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
394 void r() { | 278 void r() { |
395 var v; | 279 var v; |
396 if (v is String) { | 280 if (v is String) { |
397 v.!1length; | 281 v.!1length; |
398 v.!2getKeys; | 282 v.!2getKeys; |
399 } | 283 } |
400 }''', | 284 }''', <String>["1+length", "2-getKeys"]); |
401 <String>["1+length", "2-getKeys"]); | |
402 | 285 |
403 // Type propagation. | 286 // Type propagation. |
404 buildTests( | 287 buildTests('testCommentSnippets052', ''' |
405 'testCommentSnippets052', | |
406 ''' | |
407 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 288 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
408 void r() { | 289 void r() { |
409 List<String> values = ['a','b','c']; | 290 List<String> values = ['a','b','c']; |
410 for (var v in values) { | 291 for (var v in values) { |
411 v.!1toUpperCase; | 292 v.!1toUpperCase; |
412 v.!2getKeys; | 293 v.!2getKeys; |
413 } | 294 } |
414 }''', | 295 }''', <String>["1+toUpperCase", "2-getKeys"]); |
415 <String>["1+toUpperCase", "2-getKeys"]); | |
416 | 296 |
417 // Type propagation. | 297 // Type propagation. |
418 buildTests( | 298 buildTests('testCommentSnippets053', ''' |
419 'testCommentSnippets053', | |
420 ''' | |
421 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 299 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
422 void r() { | 300 void r() { |
423 var v; | 301 var v; |
424 while (v is String) { | 302 while (v is String) { |
425 v.!1toUpperCase; | 303 v.!1toUpperCase; |
426 v.!2getKeys; | 304 v.!2getKeys; |
427 } | 305 } |
428 }''', | 306 }''', <String>["1+toUpperCase", "2-getKeys"]); |
429 <String>["1+toUpperCase", "2-getKeys"]); | |
430 | 307 |
431 buildTests( | 308 buildTests('testCommentSnippets054', ''' |
432 'testCommentSnippets054', | |
433 ''' | |
434 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 309 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
435 void r() { | 310 void r() { |
436 var v; | 311 var v; |
437 for (; v is String; v.!1isEmpty) { | 312 for (; v is String; v.!1isEmpty) { |
438 v.!2toUpperCase; | 313 v.!2toUpperCase; |
439 v.!3getKeys; | 314 v.!3getKeys; |
440 } | 315 } |
441 }''', | 316 }''', <String>["1+isEmpty", "2+toUpperCase", "3-getKeys"]); |
442 <String>["1+isEmpty", "2+toUpperCase", "3-getKeys"]); | |
443 | 317 |
444 buildTests( | 318 buildTests('testCommentSnippets055', ''' |
445 'testCommentSnippets055', | |
446 ''' | |
447 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 319 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
448 void r() { | 320 void r() { |
449 String v; | 321 String v; |
450 if (v is Object) { | 322 if (v is Object) { |
451 v.!1toUpperCase; | 323 v.!1toUpperCase; |
452 } | 324 } |
453 }''', | 325 }''', <String>["1+toUpperCase"]); |
454 <String>["1+toUpperCase"]); | |
455 | 326 |
456 // Type propagation. | 327 // Type propagation. |
457 buildTests( | 328 buildTests('testCommentSnippets056', ''' |
458 'testCommentSnippets056', | |
459 ''' | |
460 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 329 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
461 void f(var v) { | 330 void f(var v) { |
462 if (v is!! String) { | 331 if (v is!! String) { |
463 return; | 332 return; |
464 } | 333 } |
465 v.!1toUpperCase; | 334 v.!1toUpperCase; |
466 }''', | 335 }''', <String>["1+toUpperCase"]); |
467 <String>["1+toUpperCase"]); | |
468 | 336 |
469 // Type propagation. | 337 // Type propagation. |
470 buildTests( | 338 buildTests('testCommentSnippets057', ''' |
471 'testCommentSnippets057', | |
472 ''' | |
473 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 339 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
474 void f(var v) { | 340 void f(var v) { |
475 if ((v as String).!2length == 0) { | 341 if ((v as String).!2length == 0) { |
476 v.!1toUpperCase; | 342 v.!1toUpperCase; |
477 } | 343 } |
478 }''', | 344 }''', <String>["1+toUpperCase", "2+length"]); |
479 <String>["1+toUpperCase", "2+length"]); | |
480 | 345 |
481 buildTests( | 346 buildTests( |
482 'testCommentSnippets058', | 347 'testCommentSnippets058', |
483 ''' | 348 ''' |
484 typedef vo!2id callback(int k); | 349 typedef vo!2id callback(int k); |
485 void x(callback q){} | 350 void x(callback q){} |
486 void r() { | 351 void r() { |
487 callback v; | 352 callback v; |
488 x(!1); | 353 x(!1); |
489 }''', | 354 }''', |
490 <String>["1+v", "2+void"], | 355 <String>["1+v", "2+void"], |
491 failingTests: '2'); | 356 failingTests: '2'); |
492 | 357 |
493 buildTests( | 358 buildTests('testCommentSnippets059', ''' |
494 'testCommentSnippets059', | 359 f(){((int x) => x+4).!1call(1);}''', <String>["1-call"]); |
495 ''' | |
496 f(){((int x) => x+4).!1call(1);}''', | |
497 <String>["1-call"]); | |
498 | 360 |
499 buildTests( | 361 buildTests('testCommentSnippets060', ''' |
500 'testCommentSnippets060', | |
501 ''' | |
502 class Map{} | 362 class Map{} |
503 abstract class MM extends Map{factory MM() => new Map();} | 363 abstract class MM extends Map{factory MM() => new Map();} |
504 class Z { | 364 class Z { |
505 MM x; | 365 MM x; |
506 f() { | 366 f() { |
507 x!1 | 367 x!1 |
508 } | 368 } |
509 }''', | 369 }''', <String>["1+x", "1-x[]"]); |
510 <String>["1+x", "1-x[]"]); | |
511 | 370 |
512 buildTests( | 371 buildTests('testCommentSnippets061', ''' |
513 'testCommentSnippets061', | |
514 ''' | |
515 class A{m(){!1f(3);!2}}n(){!3f(3);!4}f(x)=>x*3;''', | 372 class A{m(){!1f(3);!2}}n(){!3f(3);!4}f(x)=>x*3;''', |
516 <String>["1+f", "1+n", "2+f", "2+n", "3+f", "3+n", "4+f", "4+n"]); | 373 <String>["1+f", "1+n", "2+f", "2+n", "3+f", "3+n", "4+f", "4+n"]); |
517 | 374 |
518 // Type propagation. | 375 // Type propagation. |
519 buildTests( | 376 buildTests('testCommentSnippets063', ''' |
520 'testCommentSnippets063', | |
521 ''' | |
522 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} | 377 class String{int length(){} String toUpperCase(){} bool isEmpty(){}}class Map{ge
tKeys(){}} |
523 void r(var v) { | 378 void r(var v) { |
524 v.!1toUpperCase; | 379 v.!1toUpperCase; |
525 assert(v is String); | 380 assert(v is String); |
526 v.!2toUpperCase; | 381 v.!2toUpperCase; |
527 }''', | 382 }''', <String>["1-toUpperCase", "2+toUpperCase"]); |
528 <String>["1-toUpperCase", "2+toUpperCase"]); | |
529 | 383 |
530 buildTests( | 384 buildTests('testCommentSnippets064', ''' |
531 'testCommentSnippets064', | |
532 ''' | |
533 class Spline { | 385 class Spline { |
534 Line c; | 386 Line c; |
535 Spline a() { | 387 Spline a() { |
536 return this; | 388 return this; |
537 } | 389 } |
538 Line b() { | 390 Line b() { |
539 return null; | 391 return null; |
540 } | 392 } |
541 Spline f() { | 393 Spline f() { |
542 Line x = new Line(); | 394 Line x = new Line(); |
543 x.!9h()..!1a()..!2b().!7g(); | 395 x.!9h()..!1a()..!2b().!7g(); |
544 x.!8j..!3b()..!4c..!6c..!5a(); | 396 x.!8j..!3b()..!4c..!6c..!5a(); |
545 } | 397 } |
546 } | 398 } |
547 class Line { | 399 class Line { |
548 Spline j; | 400 Spline j; |
549 Line g() { | 401 Line g() { |
550 return this; | 402 return this; |
551 } | 403 } |
552 Spline h() { | 404 Spline h() { |
553 return null; | 405 return null; |
554 } | 406 } |
555 }''', | 407 }''', <String>[ |
556 <String>[ | 408 "1+a", |
557 "1+a", | 409 "2+b", |
558 "2+b", | 410 "1-g", |
559 "1-g", | 411 "2-h", |
560 "2-h", | 412 "3+b", |
561 "3+b", | 413 "4+c", |
562 "4+c", | 414 "5+a", |
563 "5+a", | 415 "6+c", |
564 "6+c", | 416 "7+g", |
565 "7+g", | 417 "8+j", |
566 "8+j", | 418 "9+h" |
567 "9+h" | 419 ]); |
568 ]); | |
569 | 420 |
570 buildTests( | 421 buildTests('testCommentSnippets065', ''' |
571 'testCommentSnippets065', | |
572 ''' | |
573 class Spline { | 422 class Spline { |
574 Line c; | 423 Line c; |
575 Spline a() { | 424 Spline a() { |
576 return this; | 425 return this; |
577 } | 426 } |
578 Line b() { | 427 Line b() { |
579 return null; | 428 return null; |
580 } | 429 } |
581 Spline f() { | 430 Spline f() { |
582 Line x = new Line(); | 431 Line x = new Line(); |
583 x.h()..!1; | 432 x.h()..!1; |
584 } | 433 } |
585 } | 434 } |
586 class Line { | 435 class Line { |
587 Spline j; | 436 Spline j; |
588 Line g() { | 437 Line g() { |
589 return this; | 438 return this; |
590 } | 439 } |
591 Spline h() { | 440 Spline h() { |
592 return null; | 441 return null; |
593 } | 442 } |
594 }''', | 443 }''', <String>["1+a"]); |
595 <String>["1+a"]); | |
596 | 444 |
597 buildTests( | 445 buildTests('testCommentSnippets066', ''' |
598 'testCommentSnippets066', | |
599 ''' | |
600 class Spline { | 446 class Spline { |
601 Line c; | 447 Line c; |
602 Spline a() { | 448 Spline a() { |
603 return this; | 449 return this; |
604 } | 450 } |
605 Line b() { | 451 Line b() { |
606 return null; | 452 return null; |
607 } | 453 } |
608 Spline f() { | 454 Spline f() { |
609 Line x = new Line(); | 455 Line x = new Line(); |
610 x.h()..a()..!1; | 456 x.h()..a()..!1; |
611 } | 457 } |
612 } | 458 } |
613 class Line { | 459 class Line { |
614 Spline j; | 460 Spline j; |
615 Line g() { | 461 Line g() { |
616 return this; | 462 return this; |
617 } | 463 } |
618 Spline h() { | 464 Spline h() { |
619 return null; | 465 return null; |
620 } | 466 } |
621 }''', | 467 }''', <String>["1+b"]); |
622 <String>["1+b"]); | |
623 | 468 |
624 buildTests( | 469 buildTests('testCommentSnippets067', ''' |
625 'testCommentSnippets067', | |
626 ''' | |
627 class Spline { | 470 class Spline { |
628 Line c; | 471 Line c; |
629 Spline a() { | 472 Spline a() { |
630 return this; | 473 return this; |
631 } | 474 } |
632 Line b() { | 475 Line b() { |
633 return null; | 476 return null; |
634 } | 477 } |
635 Spline f() { | 478 Spline f() { |
636 Line x = new Line(); | 479 Line x = new Line(); |
637 x.h()..a()..c..!1; | 480 x.h()..a()..c..!1; |
638 } | 481 } |
639 } | 482 } |
640 class Line { | 483 class Line { |
641 Spline j; | 484 Spline j; |
642 Line g() { | 485 Line g() { |
643 return this; | 486 return this; |
644 } | 487 } |
645 Spline h() { | 488 Spline h() { |
646 return null; | 489 return null; |
647 } | 490 } |
648 }''', | 491 }''', <String>["1+b"]); |
649 <String>["1+b"]); | |
650 | 492 |
651 buildTests( | 493 buildTests('testCommentSnippets068', ''' |
652 'testCommentSnippets068', | |
653 ''' | |
654 class Spline { | 494 class Spline { |
655 Line c; | 495 Line c; |
656 Spline a() { | 496 Spline a() { |
657 return this; | 497 return this; |
658 } | 498 } |
659 Line b() { | 499 Line b() { |
660 return null; | 500 return null; |
661 } | 501 } |
662 Spline f() { | 502 Spline f() { |
663 Line x = new Line(); | 503 Line x = new Line(); |
664 x.j..b()..c..!1; | 504 x.j..b()..c..!1; |
665 } | 505 } |
666 } | 506 } |
667 class Line { | 507 class Line { |
668 Spline j; | 508 Spline j; |
669 Line g() { | 509 Line g() { |
670 return this; | 510 return this; |
671 } | 511 } |
672 Spline h() { | 512 Spline h() { |
673 return null; | 513 return null; |
674 } | 514 } |
675 }''', | 515 }''', <String>["1+c"]); |
676 <String>["1+c"]); | |
677 | 516 |
678 buildTests( | 517 buildTests('testCommentSnippets069', ''' |
679 'testCommentSnippets069', | |
680 ''' | |
681 class Spline { | 518 class Spline { |
682 Line c; | 519 Line c; |
683 Spline a() { | 520 Spline a() { |
684 return this; | 521 return this; |
685 } | 522 } |
686 Line b() { | 523 Line b() { |
687 return null; | 524 return null; |
688 } | 525 } |
689 Spline f() { | 526 Spline f() { |
690 Line x = new Line(); | 527 Line x = new Line(); |
691 x.j..b()..!1; | 528 x.j..b()..!1; |
692 } | 529 } |
693 } | 530 } |
694 class Line { | 531 class Line { |
695 Spline j; | 532 Spline j; |
696 Line g() { | 533 Line g() { |
697 return this; | 534 return this; |
698 } | 535 } |
699 Spline h() { | 536 Spline h() { |
700 return null; | 537 return null; |
701 } | 538 } |
702 }''', | 539 }''', <String>["1+c"]); |
703 <String>["1+c"]); | |
704 | 540 |
705 buildTests( | 541 buildTests('testCommentSnippets070', ''' |
706 'testCommentSnippets070', | |
707 ''' | |
708 class Spline { | 542 class Spline { |
709 Line c; | 543 Line c; |
710 Spline a() { | 544 Spline a() { |
711 return this; | 545 return this; |
712 } | 546 } |
713 Line b() { | 547 Line b() { |
714 return null; | 548 return null; |
715 } | 549 } |
716 Spline f() { | 550 Spline f() { |
717 Line x = new Line(); | 551 Line x = new Line(); |
718 x.j..!1; | 552 x.j..!1; |
719 } | 553 } |
720 } | 554 } |
721 class Line { | 555 class Line { |
722 Spline j; | 556 Spline j; |
723 Line g() { | 557 Line g() { |
724 return this; | 558 return this; |
725 } | 559 } |
726 Spline h() { | 560 Spline h() { |
727 return null; | 561 return null; |
728 } | 562 } |
729 }''', | 563 }''', <String>["1+b"]); |
730 <String>["1+b"]); | |
731 | 564 |
732 buildTests( | 565 buildTests('testCommentSnippets072', ''' |
733 'testCommentSnippets072', | |
734 ''' | |
735 class X { | 566 class X { |
736 int _p; | 567 int _p; |
737 set p(int x) => _p = x; | 568 set p(int x) => _p = x; |
738 } | 569 } |
739 f() { | 570 f() { |
740 X x = new X(); | 571 X x = new X(); |
741 x.!1p = 3; | 572 x.!1p = 3; |
742 }''', | 573 }''', <String>["1+p"]); |
743 <String>["1+p"]); | |
744 | 574 |
745 buildTests( | 575 buildTests('testCommentSnippets073', ''' |
746 'testCommentSnippets073', | |
747 ''' | |
748 class X { | 576 class X { |
749 m() { | 577 m() { |
750 JSON.stri!1; | 578 JSON.stri!1; |
751 X f = null; | 579 X f = null; |
752 } | 580 } |
753 } | 581 } |
754 class JSON { | 582 class JSON { |
755 static stringify() {} | 583 static stringify() {} |
756 }''', | 584 }''', <String>["1+stringify"]); |
757 <String>["1+stringify"]); | |
758 | 585 |
759 buildTests( | 586 buildTests('testCommentSnippets074', ''' |
760 'testCommentSnippets074', | |
761 ''' | |
762 class X { | 587 class X { |
763 m() { | 588 m() { |
764 _x!1 | 589 _x!1 |
765 } | 590 } |
766 _x1(){} | 591 _x1(){} |
767 }''', | 592 }''', <String>["1+_x1"]); |
768 <String>["1+_x1"]); | |
769 | 593 |
770 buildTests( | 594 buildTests('testCommentSnippets075', ''' |
771 'testCommentSnippets075', | 595 p(x)=>0;var E;f(q)=>!1p(!2E);''', <String>["1+p", "2+E"]); |
772 ''' | |
773 p(x)=>0;var E;f(q)=>!1p(!2E);''', | |
774 <String>["1+p", "2+E"]); | |
775 | 596 |
776 buildTests( | 597 buildTests('testCommentSnippets076', ''' |
777 'testCommentSnippets076', | |
778 ''' | |
779 class Map<K,V>{}class List<E>{}class int{}main() {var m=new Map<Lis!1t<Map<int,i
n!2t>>,List<!3int>>();}''', | 598 class Map<K,V>{}class List<E>{}class int{}main() {var m=new Map<Lis!1t<Map<int,i
n!2t>>,List<!3int>>();}''', |
780 <String>["1+List", "2+int", "3+int"]); | 599 <String>["1+List", "2+int", "3+int"]); |
781 | 600 |
782 buildTests( | 601 buildTests('testCommentSnippets076a', ''' |
783 'testCommentSnippets076a', | |
784 ''' | |
785 class Map<K,V>{}class List<E>{}class int{}main() {var m=new Map<Lis!1t<Map<int,i
n!2t>>,List<!3>>();}''', | 602 class Map<K,V>{}class List<E>{}class int{}main() {var m=new Map<Lis!1t<Map<int,i
n!2t>>,List<!3>>();}''', |
786 <String>["1+List", "2+int", "3+int"]); | 603 <String>["1+List", "2+int", "3+int"]); |
787 | 604 |
788 buildTests( | 605 buildTests('testCommentSnippets077', ''' |
789 'testCommentSnippets077', | |
790 ''' | |
791 class FileMode { | 606 class FileMode { |
792 static const READ = const FileMode._internal(0); | 607 static const READ = const FileMode._internal(0); |
793 static const WRITE = const FileMode._internal(1); | 608 static const WRITE = const FileMode._internal(1); |
794 static const APPEND = const FileMode._internal(2); | 609 static const APPEND = const FileMode._internal(2); |
795 const FileMode._internal(int this._mode); | 610 const FileMode._internal(int this._mode); |
796 factory FileMode._internal1(int this._mode); | 611 factory FileMode._internal1(int this._mode); |
797 factory FileMode(_mode); | 612 factory FileMode(_mode); |
798 final int _mode; | 613 final int _mode; |
799 } | 614 } |
800 class File { | 615 class File { |
801 factory File(String path) => null; | 616 factory File(String path) => null; |
802 factory File.fromPath(Path path) => null; | 617 factory File.fromPath(Path path) => null; |
803 } | 618 } |
804 f() => new Fil!1''', | 619 f() => new Fil!1''', <String>[ |
805 <String>[ | 620 "1+File", |
806 "1+File", | 621 "1+File.fromPath", |
807 "1+File.fromPath", | 622 "1+FileMode", |
808 "1+FileMode", | 623 "1+FileMode._internal1", |
809 "1+FileMode._internal1", | 624 "1+FileMode._internal" |
810 "1+FileMode._internal" | 625 ]); |
811 ]); | |
812 | 626 |
813 buildTests( | 627 buildTests('testCommentSnippets078', ''' |
814 'testCommentSnippets078', | |
815 ''' | |
816 class Map{static from()=>null;clear(){}}void main() { Map.!1 }''', | 628 class Map{static from()=>null;clear(){}}void main() { Map.!1 }''', |
817 <String>["1+from", "1-clear"]); // static method, instance method | 629 <String>["1+from", "1-clear"]); // static method, instance method |
818 | 630 |
819 buildTests( | 631 buildTests('testCommentSnippets079', ''' |
820 'testCommentSnippets079', | |
821 ''' | |
822 class Map{static from()=>null;clear(){}}void main() { Map s; s.!1 }''', | 632 class Map{static from()=>null;clear(){}}void main() { Map s; s.!1 }''', |
823 <String>["1-from", "1+clear"]); // static method, instance method | 633 <String>["1-from", "1+clear"]); // static method, instance method |
824 | 634 |
825 buildTests( | 635 buildTests('testCommentSnippets080', ''' |
826 'testCommentSnippets080', | |
827 ''' | |
828 class RuntimeError{var message;}void main() { RuntimeError.!1 }''', | 636 class RuntimeError{var message;}void main() { RuntimeError.!1 }''', |
829 <String>["1-message"]); // field | 637 <String>["1-message"]); // field |
830 | 638 |
831 buildTests( | 639 buildTests( |
832 'testCommentSnippets081', | 640 'testCommentSnippets081', |
833 ''' | 641 ''' |
834 class Foo {this.!1}''', | 642 class Foo {this.!1}''', |
835 <String>["1-Object"], | 643 <String>["1-Object"], |
836 failingTests: '1'); | 644 failingTests: '1'); |
837 | 645 |
838 buildTests( | 646 buildTests('testCommentSnippets082', ''' |
839 'testCommentSnippets082', | |
840 ''' | |
841 class HttpRequest {} | 647 class HttpRequest {} |
842 class HttpResponse {} | 648 class HttpResponse {} |
843 main() { | 649 main() { |
844 var v = (HttpRequest req, HttpResp!1) | 650 var v = (HttpRequest req, HttpResp!1) |
845 }''', | 651 }''', <String>["1+HttpResponse"]); |
846 <String>["1+HttpResponse"]); | |
847 | 652 |
848 buildTests( | 653 buildTests('testCommentSnippets083', ''' |
849 'testCommentSnippets083', | 654 main() {(.!1)}''', <String>["1-toString"]); |
850 ''' | |
851 main() {(.!1)}''', | |
852 <String>["1-toString"]); | |
853 | 655 |
854 buildTests( | 656 buildTests('testCommentSnippets083a', ''' |
855 'testCommentSnippets083a', | 657 main() { .!1 }''', <String>["1-toString"]); |
856 ''' | |
857 main() { .!1 }''', | |
858 <String>["1-toString"]); | |
859 | 658 |
860 buildTests( | 659 buildTests('testCommentSnippets083b', ''' |
861 'testCommentSnippets083b', | 660 main() { null.!1 }''', <String>["1+toString"]); |
862 ''' | |
863 main() { null.!1 }''', | |
864 <String>["1+toString"]); | |
865 | 661 |
866 buildTests( | 662 buildTests('testCommentSnippets085', ''' |
867 'testCommentSnippets085', | |
868 ''' | |
869 class List{}class Map{}class Z extends List with !1Ma!2p {}''', | 663 class List{}class Map{}class Z extends List with !1Ma!2p {}''', |
870 <String>["1+List", "1+Map", "2+Map", "2-List"]); | 664 <String>["1+List", "1+Map", "2+Map", "2-List"]); |
871 | 665 |
872 buildTests( | 666 buildTests( |
873 'testCommentSnippets086', | 667 'testCommentSnippets086', |
874 ''' | 668 ''' |
875 class Q{f(){xy() {!2};x!1y();}}''', | 669 class Q{f(){xy() {!2};x!1y();}}''', |
876 <String>["1+xy", "2+f", "2-xy"], | 670 <String>["1+xy", "2+f", "2-xy"], |
877 failingTests: '2'); | 671 failingTests: '2'); |
878 | 672 |
879 buildTests( | 673 buildTests('testCommentSnippets087', ''' |
880 'testCommentSnippets087', | |
881 ''' | |
882 class Map{}class Q extends Object with !1Map {}''', | 674 class Map{}class Q extends Object with !1Map {}''', |
883 <String>["1+Map", "1-HashMap"]); | 675 <String>["1+Map", "1-HashMap"]); |
884 | 676 |
885 buildTests( | 677 buildTests('testCommentSnippets088', ''' |
886 'testCommentSnippets088', | |
887 ''' | |
888 class A { | 678 class A { |
889 int f; | 679 int f; |
890 B m(){} | 680 B m(){} |
891 } | 681 } |
892 class B extends A { | 682 class B extends A { |
893 num f; | 683 num f; |
894 A m(){} | 684 A m(){} |
895 } | 685 } |
896 class Z { | 686 class Z { |
897 B q; | 687 B q; |
898 f() {q.!1} | 688 f() {q.!1} |
899 }''', | 689 }''', <String>["1+f", "1+m"]); // f->num, m()->A |
900 <String>["1+f", "1+m"]); // f->num, m()->A | |
901 | 690 |
902 buildTests( | 691 buildTests( |
903 'testCommentSnippets089', | 692 'testCommentSnippets089', |
904 ''' | 693 ''' |
905 class Q { | 694 class Q { |
906 fqe() { | 695 fqe() { |
907 xya() { | 696 xya() { |
908 xyb() { | 697 xyb() { |
909 !1 | 698 !1 |
910 } | 699 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 "4+xza", | 736 "4+xza", |
948 "5+fqe", | 737 "5+fqe", |
949 "5+fqi", | 738 "5+fqi", |
950 "5+Q", | 739 "5+Q", |
951 "5-xya", | 740 "5-xya", |
952 "5-xyb", | 741 "5-xyb", |
953 "5-xza" | 742 "5-xza" |
954 ], | 743 ], |
955 failingTests: '123'); | 744 failingTests: '123'); |
956 | 745 |
957 buildTests( | 746 buildTests('testCommentSnippets090', ''' |
958 'testCommentSnippets090', | 747 class X { f() { var a = 'x'; a.!1 }}''', <String>["1+length"]); |
959 ''' | |
960 class X { f() { var a = 'x'; a.!1 }}''', | |
961 <String>["1+length"]); | |
962 } | 748 } |
963 | 749 |
964 void buildCompletionTests() { | 750 void buildCompletionTests() { |
965 buildTests( | 751 buildTests('testCompletion_alias_field', ''' |
966 'testCompletion_alias_field', | 752 typedef int fnint(int k); fn!1int x;''', <String>["1+fnint"]); |
967 ''' | |
968 typedef int fnint(int k); fn!1int x;''', | |
969 <String>["1+fnint"]); | |
970 | 753 |
971 buildTests( | 754 buildTests( |
972 'testCompletion_annotation_argumentList', | 755 'testCompletion_annotation_argumentList', |
973 ''' | 756 ''' |
974 class AAA {", | 757 class AAA {", |
975 const AAA({int aaa, int bbb});", | 758 const AAA({int aaa, int bbb});", |
976 }", | 759 }", |
977 ", | 760 ", |
978 @AAA(!1) | 761 @AAA(!1) |
979 main() { | 762 main() { |
(...skipping 27 matching lines...) Expand all Loading... |
1007 } | 790 } |
1008 @AAA!1 | 791 @AAA!1 |
1009 main() { | 792 main() { |
1010 }''', | 793 }''', |
1011 <String>[ | 794 <String>[ |
1012 "1+AAA" /*":" + ProposalKind.CONSTRUCTOR*/, | 795 "1+AAA" /*":" + ProposalKind.CONSTRUCTOR*/, |
1013 "1+AAA.nnn" /*":" + ProposalKind.CONSTRUCTOR*/ | 796 "1+AAA.nnn" /*":" + ProposalKind.CONSTRUCTOR*/ |
1014 ], | 797 ], |
1015 failingTests: '1'); | 798 failingTests: '1'); |
1016 | 799 |
1017 buildTests( | 800 buildTests('testCompletion_annotation_type_inClass_withoutMember', ''' |
1018 'testCompletion_annotation_type_inClass_withoutMember', | |
1019 ''' | |
1020 class AAA { | 801 class AAA { |
1021 const AAA(); | 802 const AAA(); |
1022 } | 803 } |
1023 | 804 |
1024 class C { | 805 class C { |
1025 @A!1 | 806 @A!1 |
1026 }''', | 807 }''', <String>["1+AAA" /*":" + ProposalKind.CONSTRUCTOR*/]); |
1027 <String>["1+AAA" /*":" + ProposalKind.CONSTRUCTOR*/]); | |
1028 | 808 |
1029 buildTests( | 809 buildTests('testCompletion_argument_typeName', ''' |
1030 'testCompletion_argument_typeName', | |
1031 ''' | |
1032 class Enum { | 810 class Enum { |
1033 static Enum FOO = new Enum(); | 811 static Enum FOO = new Enum(); |
1034 } | 812 } |
1035 f(Enum e) {} | 813 f(Enum e) {} |
1036 main() { | 814 main() { |
1037 f(En!1); | 815 f(En!1); |
1038 }''', | 816 }''', <String>["1+Enum"]); |
1039 <String>["1+Enum"]); | |
1040 | 817 |
1041 buildTests( | 818 buildTests('testCompletion_arguments_ignoreEmpty', ''' |
1042 'testCompletion_arguments_ignoreEmpty', | |
1043 ''' | |
1044 class A { | 819 class A { |
1045 test() {} | 820 test() {} |
1046 } | 821 } |
1047 main(A a) { | 822 main(A a) { |
1048 a.test(!1); | 823 a.test(!1); |
1049 }''', | 824 }''', <String>["1-test"]); |
1050 <String>["1-test"]); | |
1051 | 825 |
1052 buildTests( | 826 buildTests('testCompletion_as_asIdentifierPrefix', ''' |
1053 'testCompletion_as_asIdentifierPrefix', | |
1054 ''' | |
1055 main(p) { | 827 main(p) { |
1056 var asVisible; | 828 var asVisible; |
1057 var v = as!1; | 829 var v = as!1; |
1058 }''', | 830 }''', <String>["1+asVisible"]); |
1059 <String>["1+asVisible"]); | |
1060 | 831 |
1061 buildTests( | 832 buildTests('testCompletion_as_asPrefixedIdentifierStart', ''' |
1062 'testCompletion_as_asPrefixedIdentifierStart', | |
1063 ''' | |
1064 class A { | 833 class A { |
1065 var asVisible; | 834 var asVisible; |
1066 } | 835 } |
1067 | 836 |
1068 main(A p) { | 837 main(A p) { |
1069 var v = p.as!1; | 838 var v = p.as!1; |
1070 }''', | 839 }''', <String>["1+asVisible"]); |
1071 <String>["1+asVisible"]); | |
1072 | 840 |
1073 buildTests( | 841 buildTests('testCompletion_as_incompleteStatement', ''' |
1074 'testCompletion_as_incompleteStatement', | |
1075 ''' | |
1076 class MyClass {} | 842 class MyClass {} |
1077 main(p) { | 843 main(p) { |
1078 var justSomeVar; | 844 var justSomeVar; |
1079 var v = p as !1 | 845 var v = p as !1 |
1080 }''', | 846 }''', <String>["1+MyClass", "1-justSomeVar"]); |
1081 <String>["1+MyClass", "1-justSomeVar"]); | |
1082 | 847 |
1083 buildTests( | 848 buildTests('testCompletion_cascade', ''' |
1084 'testCompletion_cascade', | |
1085 ''' | |
1086 class A { | 849 class A { |
1087 aaa() {} | 850 aaa() {} |
1088 } | 851 } |
1089 | 852 |
1090 | 853 |
1091 main(A a) { | 854 main(A a) { |
1092 a..!1 aaa(); | 855 a..!1 aaa(); |
1093 }''', | 856 }''', <String>["1+aaa", "1-main"]); |
1094 <String>["1+aaa", "1-main"]); | |
1095 | 857 |
1096 buildTests( | 858 buildTests('testCompletion_combinator_afterComma', ''' |
1097 'testCompletion_combinator_afterComma', | |
1098 ''' | |
1099 import 'dart:math' show cos, !1;''', | 859 import 'dart:math' show cos, !1;''', |
1100 <String>["1+PI", "1+sin", "1+Random", "1-String"]); | 860 <String>["1+PI", "1+sin", "1+Random", "1-String"]); |
1101 | 861 |
1102 buildTests( | 862 buildTests('testCompletion_combinator_ended', ''' |
1103 'testCompletion_combinator_ended', | |
1104 ''' | |
1105 import 'dart:math' show !1;"''', | 863 import 'dart:math' show !1;"''', |
1106 <String>["1+PI", "1+sin", "1+Random", "1-String"]); | 864 <String>["1+PI", "1+sin", "1+Random", "1-String"]); |
1107 | 865 |
1108 buildTests( | 866 buildTests('testCompletion_combinator_export', ''' |
1109 'testCompletion_combinator_export', | |
1110 ''' | |
1111 export 'dart:math' show !1;"''', | 867 export 'dart:math' show !1;"''', |
1112 <String>["1+PI", "1+sin", "1+Random", "1-String"]); | 868 <String>["1+PI", "1+sin", "1+Random", "1-String"]); |
1113 | 869 |
1114 buildTests( | 870 buildTests('testCompletion_combinator_hide', ''' |
1115 'testCompletion_combinator_hide', | |
1116 ''' | |
1117 import 'dart:math' hide !1;"''', | 871 import 'dart:math' hide !1;"''', |
1118 <String>["1+PI", "1+sin", "1+Random", "1-String"]); | 872 <String>["1+PI", "1+sin", "1+Random", "1-String"]); |
1119 | 873 |
1120 buildTests( | 874 buildTests('testCompletion_combinator_notEnded', ''' |
1121 'testCompletion_combinator_notEnded', | |
1122 ''' | |
1123 import 'dart:math' show !1"''', | 875 import 'dart:math' show !1"''', |
1124 <String>["1+PI", "1+sin", "1+Random", "1-String"]); | 876 <String>["1+PI", "1+sin", "1+Random", "1-String"]); |
1125 | 877 |
1126 buildTests( | 878 buildTests('testCompletion_combinator_usePrefix', ''' |
1127 'testCompletion_combinator_usePrefix', | |
1128 ''' | |
1129 import 'dart:math' show s!1"''', | 879 import 'dart:math' show s!1"''', |
1130 <String>["1+sin", "1+sqrt", "1-cos", "1-String"]); | 880 <String>["1+sin", "1+sqrt", "1-cos", "1-String"]); |
1131 | 881 |
1132 buildTests( | 882 buildTests( |
1133 'testCompletion_constructor_field', | 883 'testCompletion_constructor_field', |
1134 ''' | 884 ''' |
1135 class X { X(this.field); int f!1ield;}''', | 885 class X { X(this.field); int f!1ield;}''', |
1136 <String>["1+field"], | 886 <String>["1+field"], |
1137 failingTests: '1'); | 887 failingTests: '1'); |
1138 | 888 |
(...skipping 13 matching lines...) Expand all Loading... |
1152 buildTests( | 902 buildTests( |
1153 'testCompletion_constructorArguments_whenPrefixedType', | 903 'testCompletion_constructorArguments_whenPrefixedType', |
1154 ''' | 904 ''' |
1155 import 'dart:math' as m; | 905 import 'dart:math' as m; |
1156 main() { | 906 main() { |
1157 new m.Random(!1); | 907 new m.Random(!1); |
1158 }''', | 908 }''', |
1159 <String>["1+Random:ARGUMENT_LIST"], | 909 <String>["1+Random:ARGUMENT_LIST"], |
1160 failingTests: '1'); | 910 failingTests: '1'); |
1161 | 911 |
1162 buildTests( | 912 buildTests('testCompletion_dartDoc_reference_forClass', ''' |
1163 'testCompletion_dartDoc_reference_forClass', | |
1164 ''' | |
1165 /** | 913 /** |
1166 * [int!1] | 914 * [int!1] |
1167 * [method!2] | 915 * [method!2] |
1168 */ | 916 */ |
1169 class AAA { | 917 class AAA { |
1170 methodA() {} | 918 methodA() {} |
1171 }''', | 919 }''', <String>["1+int", "1-method", "2+methodA", "2-int"]); |
1172 <String>["1+int", "1-method", "2+methodA", "2-int"]); | |
1173 | 920 |
1174 buildTests( | 921 buildTests('testCompletion_dartDoc_reference_forConstructor', ''' |
1175 'testCompletion_dartDoc_reference_forConstructor', | |
1176 ''' | |
1177 class A { | 922 class A { |
1178 /** | 923 /** |
1179 * [aa!1] | 924 * [aa!1] |
1180 * [int!2] | 925 * [int!2] |
1181 * [method!3] | 926 * [method!3] |
1182 */ | 927 */ |
1183 A.named(aaa, bbb) {} | 928 A.named(aaa, bbb) {} |
1184 methodA() {} | 929 methodA() {} |
1185 }''', | 930 }''', <String>["1+aaa", "1-bbb", "2+int", "2-double", "3+methodA"]); |
1186 <String>["1+aaa", "1-bbb", "2+int", "2-double", "3+methodA"]); | |
1187 | 931 |
1188 buildTests( | 932 buildTests( |
1189 'testCompletion_dartDoc_reference_forFunction', | 933 'testCompletion_dartDoc_reference_forFunction', |
1190 ''' | 934 ''' |
1191 /** | 935 /** |
1192 * [aa!1] | 936 * [aa!1] |
1193 * [int!2] | 937 * [int!2] |
1194 * [function!3] | 938 * [function!3] |
1195 */ | 939 */ |
1196 functionA(aaa, bbb) {} | 940 functionA(aaa, bbb) {} |
(...skipping 23 matching lines...) Expand all Loading... |
1220 "1+aaa", | 964 "1+aaa", |
1221 "1-bbb", | 965 "1-bbb", |
1222 "2+int", | 966 "2+int", |
1223 "2-double", | 967 "2-double", |
1224 "3+FunctionA", | 968 "3+FunctionA", |
1225 "3+FunctionB", | 969 "3+FunctionB", |
1226 "3-int" | 970 "3-int" |
1227 ], | 971 ], |
1228 failingTests: '1'); | 972 failingTests: '1'); |
1229 | 973 |
1230 buildTests( | 974 buildTests('testCompletion_dartDoc_reference_forMethod', ''' |
1231 'testCompletion_dartDoc_reference_forMethod', | |
1232 ''' | |
1233 class A { | 975 class A { |
1234 /** | 976 /** |
1235 * [aa!1] | 977 * [aa!1] |
1236 * [int!2] | 978 * [int!2] |
1237 * [method!3] | 979 * [method!3] |
1238 */ | 980 */ |
1239 methodA(aaa, bbb) {} | 981 methodA(aaa, bbb) {} |
1240 methodB() {} | 982 methodB() {} |
1241 }''', | 983 }''', <String>[ |
1242 <String>[ | 984 "1+aaa", |
1243 "1+aaa", | 985 "1-bbb", |
1244 "1-bbb", | 986 "2+int", |
1245 "2+int", | 987 "2-double", |
1246 "2-double", | 988 "3+methodA", |
1247 "3+methodA", | 989 "3+methodB", |
1248 "3+methodB", | 990 "3-int" |
1249 "3-int" | 991 ]); |
1250 ]); | |
1251 | 992 |
1252 buildTests( | 993 buildTests('testCompletion_dartDoc_reference_incomplete', ''' |
1253 'testCompletion_dartDoc_reference_incomplete', | |
1254 ''' | |
1255 /** | 994 /** |
1256 * [doubl!1 some text | 995 * [doubl!1 some text |
1257 * other text | 996 * other text |
1258 */ | 997 */ |
1259 class A {} | 998 class A {} |
1260 /** | 999 /** |
1261 * [!2 some text | 1000 * [!2 some text |
1262 * other text | 1001 * other text |
1263 */ | 1002 */ |
1264 class B {} | 1003 class B {} |
1265 /** | 1004 /** |
1266 * [!3] some text | 1005 * [!3] some text |
1267 */ | 1006 */ |
1268 class C {}''', | 1007 class C {}''', <String>[ |
1269 <String>[ | 1008 "1+double", |
1270 "1+double", | 1009 "1-int", |
1271 "1-int", | 1010 "2+int", |
1272 "2+int", | 1011 "2+String", |
1273 "2+String", | 1012 "3+int", |
1274 "3+int", | 1013 "3+String" |
1275 "3+String" | 1014 ]); |
1276 ]); | |
1277 | 1015 |
1278 buildTests( | 1016 buildTests('testCompletion_double_inFractionPart', ''' |
1279 'testCompletion_double_inFractionPart', | |
1280 ''' | |
1281 main() { | 1017 main() { |
1282 1.0!1 | 1018 1.0!1 |
1283 }''', | 1019 }''', <String>["1-abs", "1-main"]); |
1284 <String>["1-abs", "1-main"]); | |
1285 | 1020 |
1286 buildTests( | 1021 buildTests('testCompletion_enum', ''' |
1287 'testCompletion_enum', | |
1288 ''' | |
1289 enum MyEnum {A, B, C} | 1022 enum MyEnum {A, B, C} |
1290 main() { | 1023 main() { |
1291 MyEnum.!1; | 1024 MyEnum.!1; |
1292 }''', | 1025 }''', <String>["1+values", "1+A", "1+B", "1+C"]); |
1293 <String>["1+values", "1+A", "1+B", "1+C"]); | |
1294 | 1026 |
1295 buildTests( | 1027 buildTests('testCompletion_exactPrefix_hasHigherRelevance', ''' |
1296 'testCompletion_exactPrefix_hasHigherRelevance', | |
1297 ''' | |
1298 var STR; | 1028 var STR; |
1299 main(p) { | 1029 main(p) { |
1300 var str; | 1030 var str; |
1301 str!1; | 1031 str!1; |
1302 STR!2; | 1032 STR!2; |
1303 Str!3; | 1033 Str!3; |
1304 }''', | 1034 }''', <String>[ |
1305 <String>[ | 1035 "1+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/, |
1306 "1+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/, | 1036 "1+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/, |
1307 "1+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/, | 1037 "2+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/, |
1308 "2+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/, | 1038 "2+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/, |
1309 "2+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/, | 1039 "3+String" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/, |
1310 "3+String" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 1)*/, | 1040 "3+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/, |
1311 "3+STR" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/, | 1041 "3+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/ |
1312 "3+str" /*",rel=" + (CompletionProposal.RELEVANCE_DEFAULT + 0)*/ | 1042 ]); |
1313 ]); | |
1314 | 1043 |
1315 buildTests( | 1044 buildTests('testCompletion_export_dart', ''' |
1316 'testCompletion_export_dart', | |
1317 ''' | |
1318 import 'dart:math | 1045 import 'dart:math |
1319 import 'dart:_chrome | 1046 import 'dart:_chrome |
1320 import 'dart:_collection.dev | 1047 import 'dart:_collection.dev |
1321 export 'dart:!1''', | 1048 export 'dart:!1''', <String>[ |
1322 <String>[ | 1049 "1+dart:core", |
1323 "1+dart:core", | 1050 "1+dart:math", |
1324 "1+dart:math", | 1051 "1-dart:_chrome", |
1325 "1-dart:_chrome", | 1052 "1-dart:_collection.dev" |
1326 "1-dart:_collection.dev" | 1053 ]); |
1327 ]); | |
1328 | 1054 |
1329 buildTests( | 1055 buildTests( |
1330 'testCompletion_export_noStringLiteral_noSemicolon', | 1056 'testCompletion_export_noStringLiteral_noSemicolon', |
1331 ''' | 1057 ''' |
1332 import !1 | 1058 import !1 |
1333 | 1059 |
1334 class A {}''', | 1060 class A {}''', |
1335 <String>["1+'dart:!';", "1+'package:!';"], | 1061 <String>["1+'dart:!';", "1+'package:!';"], |
1336 failingTests: '1'); | 1062 failingTests: '1'); |
1337 | 1063 |
1338 buildTests( | 1064 buildTests('testCompletion_forStmt_vars', ''' |
1339 'testCompletion_forStmt_vars', | |
1340 ''' | |
1341 class int{}class Foo { mth() { for (in!1t i = 0; i!2 < 5; i!3++); }}''', | 1065 class int{}class Foo { mth() { for (in!1t i = 0; i!2 < 5; i!3++); }}''', |
1342 <String>["1+int", "2+i", "3+i"]); | 1066 <String>["1+int", "2+i", "3+i"]); |
1343 | 1067 |
1344 buildTests( | 1068 buildTests('testCompletion_function', ''' |
1345 'testCompletion_function', | |
1346 ''' | |
1347 class Foo { int boo = 7; mth() { PNGS.sort((String a, Str!1) => a.compareTo(b));
}}''', | 1069 class Foo { int boo = 7; mth() { PNGS.sort((String a, Str!1) => a.compareTo(b));
}}''', |
1348 <String>["1+String"]); | 1070 <String>["1+String"]); |
1349 | 1071 |
1350 buildTests( | 1072 buildTests('testCompletion_function_partial', ''' |
1351 'testCompletion_function_partial', | |
1352 ''' | |
1353 class Foo { int boo = 7; mth() { PNGS.sort((String a, Str!1)); }}''', | 1073 class Foo { int boo = 7; mth() { PNGS.sort((String a, Str!1)); }}''', |
1354 <String>["1+String"]); | 1074 <String>["1+String"]); |
1355 | 1075 |
1356 buildTests( | 1076 buildTests( |
1357 'testCompletion_functionTypeParameter_namedArgument', | 1077 'testCompletion_functionTypeParameter_namedArgument', |
1358 ''' | 1078 ''' |
1359 typedef FFF(a, b, {x1, x2, y}); | 1079 typedef FFF(a, b, {x1, x2, y}); |
1360 main(FFF fff) { | 1080 main(FFF fff) { |
1361 fff(1, 2, !1)!2; | 1081 fff(1, 2, !1)!2; |
1362 }''', | 1082 }''', |
1363 <String>["1+x1", "2-x2"], | 1083 <String>["1+x1", "2-x2"], |
1364 failingTests: '1'); | 1084 failingTests: '1'); |
1365 | 1085 |
1366 buildTests( | 1086 buildTests('testCompletion_ifStmt_field1', ''' |
1367 'testCompletion_ifStmt_field1', | 1087 class Foo { int myField = 7; mth() { if (!1) {}}}''', <String>["1+myField"]); |
1368 ''' | |
1369 class Foo { int myField = 7; mth() { if (!1) {}}}''', | |
1370 <String>["1+myField"]); | |
1371 | 1088 |
1372 buildTests( | 1089 buildTests('testCompletion_ifStmt_field1a', ''' |
1373 'testCompletion_ifStmt_field1a', | 1090 class Foo { int myField = 7; mth() { if (!1) }}''', <String>["1+myField"]); |
1374 ''' | |
1375 class Foo { int myField = 7; mth() { if (!1) }}''', | |
1376 <String>["1+myField"]); | |
1377 | 1091 |
1378 buildTests( | 1092 buildTests('testCompletion_ifStmt_field2', ''' |
1379 'testCompletion_ifStmt_field2', | 1093 class Foo { int myField = 7; mth() { if (m!1) {}}}''', <String>["1+myField"]); |
1380 ''' | |
1381 class Foo { int myField = 7; mth() { if (m!1) {}}}''', | |
1382 <String>["1+myField"]); | |
1383 | 1094 |
1384 buildTests( | 1095 buildTests('testCompletion_ifStmt_field2a', ''' |
1385 'testCompletion_ifStmt_field2a', | 1096 class Foo { int myField = 7; mth() { if (m!1) }}''', <String>["1+myField"]); |
1386 ''' | |
1387 class Foo { int myField = 7; mth() { if (m!1) }}''', | |
1388 <String>["1+myField"]); | |
1389 | 1097 |
1390 buildTests( | 1098 buildTests('testCompletion_ifStmt_field2b', ''' |
1391 'testCompletion_ifStmt_field2b', | 1099 class Foo { myField = 7; mth() { if (m!1) {}}}''', <String>["1+myField"]); |
1392 ''' | |
1393 class Foo { myField = 7; mth() { if (m!1) {}}}''', | |
1394 <String>["1+myField"]); | |
1395 | 1100 |
1396 buildTests( | 1101 buildTests('testCompletion_ifStmt_localVar', ''' |
1397 'testCompletion_ifStmt_localVar', | 1102 class Foo { mth() { int value = 7; if (v!1) {}}}''', <String>["1+value"]); |
1398 ''' | |
1399 class Foo { mth() { int value = 7; if (v!1) {}}}''', | |
1400 <String>["1+value"]); | |
1401 | 1103 |
1402 buildTests( | 1104 buildTests('testCompletion_ifStmt_localVara', ''' |
1403 'testCompletion_ifStmt_localVara', | 1105 class Foo { mth() { value = 7; if (v!1) {}}}''', <String>["1-value"]); |
1404 ''' | |
1405 class Foo { mth() { value = 7; if (v!1) {}}}''', | |
1406 <String>["1-value"]); | |
1407 | 1106 |
1408 buildTests( | 1107 buildTests('testCompletion_ifStmt_topLevelVar', ''' |
1409 'testCompletion_ifStmt_topLevelVar', | 1108 int topValue = 7; class Foo { mth() { if (t!1) {}}}''', <String>["1+topValue"]); |
1410 ''' | |
1411 int topValue = 7; class Foo { mth() { if (t!1) {}}}''', | |
1412 <String>["1+topValue"]); | |
1413 | 1109 |
1414 buildTests( | 1110 buildTests('testCompletion_ifStmt_topLevelVara', ''' |
1415 'testCompletion_ifStmt_topLevelVara', | 1111 topValue = 7; class Foo { mth() { if (t!1) {}}}''', <String>["1+topValue"]); |
1416 ''' | |
1417 topValue = 7; class Foo { mth() { if (t!1) {}}}''', | |
1418 <String>["1+topValue"]); | |
1419 | 1112 |
1420 buildTests( | 1113 buildTests( |
1421 'testCompletion_ifStmt_unionType_nonStrict', | 1114 'testCompletion_ifStmt_unionType_nonStrict', |
1422 ''' | 1115 ''' |
1423 class A { a() => null; x() => null} | 1116 class A { a() => null; x() => null} |
1424 class B { a() => null; y() => null} | 1117 class B { a() => null; y() => null} |
1425 void main() { | 1118 void main() { |
1426 var x; | 1119 var x; |
1427 var c; | 1120 var c; |
1428 if(c) { | 1121 if(c) { |
(...skipping 17 matching lines...) Expand all Loading... |
1446 if(c) { | 1139 if(c) { |
1447 x = new A(); | 1140 x = new A(); |
1448 } else { | 1141 } else { |
1449 x = new B(); | 1142 x = new B(); |
1450 } | 1143 } |
1451 x.!1; | 1144 x.!1; |
1452 }''', | 1145 }''', |
1453 <String>["1+a", "1-x", "1-y"], | 1146 <String>["1+a", "1-x", "1-y"], |
1454 failingTests: '1'); | 1147 failingTests: '1'); |
1455 | 1148 |
1456 buildTests( | 1149 buildTests('testCompletion_import', ''' |
1457 'testCompletion_import', | 1150 import '!1';''', <String>["1+dart:!", "1+package:!"]); |
1458 ''' | |
1459 import '!1';''', | |
1460 <String>["1+dart:!", "1+package:!"]); | |
1461 | 1151 |
1462 buildTests( | 1152 buildTests('testCompletion_import_dart', ''' |
1463 'testCompletion_import_dart', | |
1464 ''' | |
1465 import 'dart:math | 1153 import 'dart:math |
1466 import 'dart:_chrome | 1154 import 'dart:_chrome |
1467 import 'dart:_collection.dev | 1155 import 'dart:_collection.dev |
1468 import 'dart:!1''', | 1156 import 'dart:!1''', <String>[ |
1469 <String>[ | 1157 "1+dart:core", |
1470 "1+dart:core", | 1158 "1+dart:math", |
1471 "1+dart:math", | 1159 "1-dart:_chrome", |
1472 "1-dart:_chrome", | 1160 "1-dart:_collection.dev" |
1473 "1-dart:_collection.dev" | 1161 ]); |
1474 ]); | |
1475 | 1162 |
1476 buildTests( | 1163 buildTests('testCompletion_import_hasStringLiteral_noSemicolon', ''' |
1477 'testCompletion_import_hasStringLiteral_noSemicolon', | |
1478 ''' | |
1479 import '!1' | 1164 import '!1' |
1480 | 1165 |
1481 class A {}''', | 1166 class A {}''', <String>["1+dart:!", "1+package:!"]); |
1482 <String>["1+dart:!", "1+package:!"]); | |
1483 | 1167 |
1484 buildTests( | 1168 buildTests( |
1485 'testCompletion_import_noSpace', | 1169 'testCompletion_import_noSpace', |
1486 ''' | 1170 ''' |
1487 import!1''', | 1171 import!1''', |
1488 <String>["1+ 'dart:!';", "1+ 'package:!';"], | 1172 <String>["1+ 'dart:!';", "1+ 'package:!';"], |
1489 failingTests: '1'); | 1173 failingTests: '1'); |
1490 | 1174 |
1491 buildTests( | 1175 buildTests( |
1492 'testCompletion_import_noStringLiteral', | 1176 'testCompletion_import_noStringLiteral', |
1493 ''' | 1177 ''' |
1494 import !1;''', | 1178 import !1;''', |
1495 <String>["1+'dart:!'", "1+'package:!'"], | 1179 <String>["1+'dart:!'", "1+'package:!'"], |
1496 failingTests: '1'); | 1180 failingTests: '1'); |
1497 | 1181 |
1498 buildTests( | 1182 buildTests( |
1499 'testCompletion_import_noStringLiteral_noSemicolon', | 1183 'testCompletion_import_noStringLiteral_noSemicolon', |
1500 ''' | 1184 ''' |
1501 import !1 | 1185 import !1 |
1502 | 1186 |
1503 class A {}''', | 1187 class A {}''', |
1504 <String>["1+'dart:!';", "1+'package:!';"], | 1188 <String>["1+'dart:!';", "1+'package:!';"], |
1505 failingTests: '1'); | 1189 failingTests: '1'); |
1506 | 1190 |
1507 buildTests( | 1191 buildTests('testCompletion_incompleteClassMember', ''' |
1508 'testCompletion_incompleteClassMember', | |
1509 ''' | |
1510 class A { | 1192 class A { |
1511 Str!1 | 1193 Str!1 |
1512 final f = null; | 1194 final f = null; |
1513 }''', | 1195 }''', <String>["1+String", "1-bool"]); |
1514 <String>["1+String", "1-bool"]); | |
1515 | 1196 |
1516 buildTests( | 1197 buildTests('testCompletion_incompleteClosure_parameterType', ''' |
1517 'testCompletion_incompleteClosure_parameterType', | |
1518 ''' | |
1519 f1(cb(String s)) {} | 1198 f1(cb(String s)) {} |
1520 f2(String s) {} | 1199 f2(String s) {} |
1521 main() { | 1200 main() { |
1522 f1((Str!1)); | 1201 f1((Str!1)); |
1523 f2((Str!2)); | 1202 f2((Str!2)); |
1524 }''', | 1203 }''', <String>["1+String", "1-bool", "2+String", "2-bool"]); |
1525 <String>["1+String", "1-bool", "2+String", "2-bool"]); | |
1526 | 1204 |
1527 buildTests( | 1205 buildTests( |
1528 'testCompletion_inPeriodPeriod', | 1206 'testCompletion_inPeriodPeriod', |
1529 ''' | 1207 ''' |
1530 main(String str) { | 1208 main(String str) { |
1531 1 < str.!1.length; | 1209 1 < str.!1.length; |
1532 1 + str.!2.length; | 1210 1 + str.!2.length; |
1533 1 + 2 * str.!3.length; | 1211 1 + 2 * str.!3.length; |
1534 }''', | 1212 }''', |
1535 <String>["1+codeUnits", "2+codeUnits", "3+codeUnits"], | 1213 <String>["1+codeUnits", "2+codeUnits", "3+codeUnits"], |
1536 failingTests: '123'); | 1214 failingTests: '123'); |
1537 | 1215 |
1538 // no checks, but no exceptions | 1216 // no checks, but no exceptions |
1539 buildTests( | 1217 buildTests('testCompletion_instanceCreation_unresolved', ''' |
1540 'testCompletion_instanceCreation_unresolved', | |
1541 ''' | |
1542 class A { | 1218 class A { |
1543 } | 1219 } |
1544 main() { | 1220 main() { |
1545 new NoSuchClass(!1); | 1221 new NoSuchClass(!1); |
1546 new A.noSuchConstructor(!2); | 1222 new A.noSuchConstructor(!2); |
1547 }''', | 1223 }''', <String>["1+int", "2+int"]); |
1548 <String>["1+int", "2+int"]); | |
1549 | 1224 |
1550 buildTests( | 1225 buildTests( |
1551 'testCompletion_import_lib', | 1226 'testCompletion_import_lib', |
1552 ''' | 1227 ''' |
1553 import '!1''', | 1228 import '!1''', |
1554 <String>["1+my_lib.dart"], | 1229 <String>["1+my_lib.dart"], |
1555 extraFiles: <String, String>{"/my_lib.dart": ""}, | 1230 extraFiles: <String, String>{"/my_lib.dart": ""}, |
1556 failingTests: '1'); | 1231 failingTests: '1'); |
1557 | 1232 |
1558 buildTests( | 1233 buildTests('testCompletion_is', ''' |
1559 'testCompletion_is', | |
1560 ''' | |
1561 class MyClass {} | 1234 class MyClass {} |
1562 main(p) { | 1235 main(p) { |
1563 var isVariable; | 1236 var isVariable; |
1564 if (p is MyCla!1) {} | 1237 if (p is MyCla!1) {} |
1565 var v1 = p is MyCla!2; | 1238 var v1 = p is MyCla!2; |
1566 var v2 = p is !3; | 1239 var v2 = p is !3; |
1567 var v2 = p is!4; | 1240 var v2 = p is!4; |
1568 }''', | 1241 }''', <String>[ |
1569 <String>[ | 1242 "1+MyClass", |
1570 "1+MyClass", | 1243 "2+MyClass", |
1571 "2+MyClass", | 1244 "3+MyClass", |
1572 "3+MyClass", | 1245 "3-v1", |
1573 "3-v1", | 1246 "4+is", |
1574 "4+is", | 1247 "4-isVariable" |
1575 "4-isVariable" | 1248 ]); |
1576 ]); | |
1577 | 1249 |
1578 buildTests( | 1250 buildTests('testCompletion_is_asIdentifierStart', ''' |
1579 'testCompletion_is_asIdentifierStart', | |
1580 ''' | |
1581 main(p) { | 1251 main(p) { |
1582 var isVisible; | 1252 var isVisible; |
1583 var v1 = is!1; | 1253 var v1 = is!1; |
1584 var v2 = is!2 | 1254 var v2 = is!2 |
1585 }''', | 1255 }''', <String>["1+isVisible", "2+isVisible"]); |
1586 <String>["1+isVisible", "2+isVisible"]); | |
1587 | 1256 |
1588 buildTests( | 1257 buildTests('testCompletion_is_asPrefixedIdentifierStart', ''' |
1589 'testCompletion_is_asPrefixedIdentifierStart', | |
1590 ''' | |
1591 class A { | 1258 class A { |
1592 var isVisible; | 1259 var isVisible; |
1593 } | 1260 } |
1594 | 1261 |
1595 main(A p) { | 1262 main(A p) { |
1596 var v1 = p.is!1; | 1263 var v1 = p.is!1; |
1597 var v2 = p.is!2 | 1264 var v2 = p.is!2 |
1598 }''', | 1265 }''', <String>["1+isVisible", "2+isVisible"]); |
1599 <String>["1+isVisible", "2+isVisible"]); | |
1600 | 1266 |
1601 buildTests( | 1267 buildTests('testCompletion_is_incompleteStatement1', ''' |
1602 'testCompletion_is_incompleteStatement1', | |
1603 ''' | |
1604 class MyClass {} | 1268 class MyClass {} |
1605 main(p) { | 1269 main(p) { |
1606 var justSomeVar; | 1270 var justSomeVar; |
1607 var v = p is !1 | 1271 var v = p is !1 |
1608 }''', | 1272 }''', <String>["1+MyClass", "1-justSomeVar"]); |
1609 <String>["1+MyClass", "1-justSomeVar"]); | |
1610 | 1273 |
1611 buildTests( | 1274 buildTests('testCompletion_is_incompleteStatement2', ''' |
1612 'testCompletion_is_incompleteStatement2', | |
1613 ''' | |
1614 class MyClass {} | 1275 class MyClass {} |
1615 main(p) { | 1276 main(p) { |
1616 var isVariable; | 1277 var isVariable; |
1617 var v = p is!1 | 1278 var v = p is!1 |
1618 }''', | 1279 }''', <String>["1+is", "1-isVariable"]); |
1619 <String>["1+is", "1-isVariable"]); | |
1620 | 1280 |
1621 buildTests( | 1281 buildTests('testCompletion_keyword_in', ''' |
1622 'testCompletion_keyword_in', | 1282 class Foo { int input = 7; mth() { if (in!1) {}}}''', <String>["1+input"]); |
1623 ''' | |
1624 class Foo { int input = 7; mth() { if (in!1) {}}}''', | |
1625 <String>["1+input"]); | |
1626 | 1283 |
1627 buildTests( | 1284 buildTests('testCompletion_keyword_syntheticIdentifier', ''' |
1628 'testCompletion_keyword_syntheticIdentifier', | |
1629 ''' | |
1630 main() { | 1285 main() { |
1631 var caseVar; | 1286 var caseVar; |
1632 var otherVar; | 1287 var otherVar; |
1633 var v = case!1 | 1288 var v = case!1 |
1634 }''', | 1289 }''', <String>["1+caseVar", "1-otherVar"]); |
1635 <String>["1+caseVar", "1-otherVar"]); | |
1636 | 1290 |
1637 buildTests( | 1291 buildTests('testCompletion_libraryIdentifier_atEOF', ''' |
1638 'testCompletion_libraryIdentifier_atEOF', | 1292 library int.!1''', <String>["1-parse", "1-bool"]); |
1639 ''' | |
1640 library int.!1''', | |
1641 <String>["1-parse", "1-bool"]); | |
1642 | 1293 |
1643 buildTests( | 1294 buildTests('testCompletion_libraryIdentifier_notEOF', ''' |
1644 'testCompletion_libraryIdentifier_notEOF', | 1295 library int.!1''', <String>["1-parse", "1-bool"]); |
1645 ''' | |
1646 library int.!1''', | |
1647 <String>["1-parse", "1-bool"]); | |
1648 | 1296 |
1649 buildTests( | 1297 buildTests( |
1650 'testCompletion_methodRef_asArg_incompatibleFunctionType', | 1298 'testCompletion_methodRef_asArg_incompatibleFunctionType', |
1651 ''' | 1299 ''' |
1652 foo( f(int p) ) {} | 1300 foo( f(int p) ) {} |
1653 class Functions { | 1301 class Functions { |
1654 static myFuncInt(int p) {} | 1302 static myFuncInt(int p) {} |
1655 static myFuncDouble(double p) {} | 1303 static myFuncDouble(double p) {} |
1656 } | 1304 } |
1657 bar(p) {} | 1305 bar(p) {} |
(...skipping 16 matching lines...) Expand all Loading... |
1674 bar(p) {} | 1322 bar(p) {} |
1675 main(p) { | 1323 main(p) { |
1676 foo( (int p) => Functions.!1; ); | 1324 foo( (int p) => Functions.!1; ); |
1677 }''', | 1325 }''', |
1678 <String>[ | 1326 <String>[ |
1679 "1+myFunc" /*":" + ProposalKind.METHOD*/, | 1327 "1+myFunc" /*":" + ProposalKind.METHOD*/, |
1680 "1-myFunc" /*":" + ProposalKind.METHOD_NAME*/ | 1328 "1-myFunc" /*":" + ProposalKind.METHOD_NAME*/ |
1681 ], | 1329 ], |
1682 failingTests: '1'); | 1330 failingTests: '1'); |
1683 | 1331 |
1684 buildTests( | 1332 buildTests('testCompletion_methodRef_asArg_ofFunctionType', ''' |
1685 'testCompletion_methodRef_asArg_ofFunctionType', | |
1686 ''' | |
1687 foo( f(int p) ) {} | 1333 foo( f(int p) ) {} |
1688 class Functions { | 1334 class Functions { |
1689 static int myFunc(int p) {} | 1335 static int myFunc(int p) {} |
1690 } | 1336 } |
1691 main(p) { | 1337 main(p) { |
1692 foo(Functions.!1); | 1338 foo(Functions.!1); |
1693 }''', | 1339 }''', <String>[ |
1694 <String>[ | 1340 "1+myFunc" /*":" + ProposalKind.METHOD*/, |
1695 "1+myFunc" /*":" + ProposalKind.METHOD*/, | 1341 "1+myFunc" /*":" + ProposalKind.METHOD_NAME*/ |
1696 "1+myFunc" /*":" + ProposalKind.METHOD_NAME*/ | 1342 ]); |
1697 ]); | |
1698 | 1343 |
1699 buildTests( | 1344 buildTests('testCompletion_namedArgument_alreadyUsed', ''' |
1700 'testCompletion_namedArgument_alreadyUsed', | 1345 func({foo}) {} main() { func(foo: 0, fo!1); }''', <String>["1-foo"]); |
1701 ''' | |
1702 func({foo}) {} main() { func(foo: 0, fo!1); }''', | |
1703 <String>["1-foo"]); | |
1704 | 1346 |
1705 buildTests( | 1347 buildTests( |
1706 'testCompletion_namedArgument_constructor', | 1348 'testCompletion_namedArgument_constructor', |
1707 ''' | 1349 ''' |
1708 class A {A({foo, bar}) {}} main() { new A(fo!1); }''', | 1350 class A {A({foo, bar}) {}} main() { new A(fo!1); }''', |
1709 <String>["1+foo", "1-bar"], | 1351 <String>["1+foo", "1-bar"], |
1710 failingTests: '1'); | 1352 failingTests: '1'); |
1711 | 1353 |
1712 buildTests( | 1354 buildTests( |
1713 'testCompletion_namedArgument_empty', | 1355 'testCompletion_namedArgument_empty', |
1714 ''' | 1356 ''' |
1715 func({foo, bar}) {} main() { func(!1); }''', | 1357 func({foo, bar}) {} main() { func(!1); }''', |
1716 <String>[ | 1358 <String>[ |
1717 "1+foo" /*":" + ProposalKind.NAMED_ARGUMENT*/, | 1359 "1+foo" /*":" + ProposalKind.NAMED_ARGUMENT*/, |
1718 "1-foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/ | 1360 "1-foo" /*":" + ProposalKind.OPTIONAL_ARGUMENT*/ |
1719 ], | 1361 ], |
1720 failingTests: '1'); | 1362 failingTests: '1'); |
1721 | 1363 |
1722 buildTests( | 1364 buildTests( |
1723 'testCompletion_namedArgument_function', | 1365 'testCompletion_namedArgument_function', |
1724 ''' | 1366 ''' |
1725 func({foo, bar}) {} main() { func(fo!1); }''', | 1367 func({foo, bar}) {} main() { func(fo!1); }''', |
1726 <String>["1+foo", "1-bar"], | 1368 <String>["1+foo", "1-bar"], |
1727 failingTests: '1'); | 1369 failingTests: '1'); |
1728 | 1370 |
1729 buildTests( | 1371 buildTests('testCompletion_namedArgument_notNamed', ''' |
1730 'testCompletion_namedArgument_notNamed', | 1372 func([foo]) {} main() { func(fo!1); }''', <String>["1-foo"]); |
1731 ''' | |
1732 func([foo]) {} main() { func(fo!1); }''', | |
1733 <String>["1-foo"]); | |
1734 | 1373 |
1735 buildTests( | 1374 buildTests('testCompletion_namedArgument_unresolvedFunction', ''' |
1736 'testCompletion_namedArgument_unresolvedFunction', | 1375 main() { func(fo!1); }''', <String>["1-foo"]); |
1737 ''' | |
1738 main() { func(fo!1); }''', | |
1739 <String>["1-foo"]); | |
1740 | 1376 |
1741 buildTests( | 1377 buildTests('testCompletion_newMemberType1', ''' |
1742 'testCompletion_newMemberType1', | |
1743 ''' | |
1744 class Collection{}class List extends Collection{}class Foo { !1 }''', | 1378 class Collection{}class List extends Collection{}class Foo { !1 }''', |
1745 <String>["1+Collection", "1+List"]); | 1379 <String>["1+Collection", "1+List"]); |
1746 | 1380 |
1747 buildTests( | 1381 buildTests('testCompletion_newMemberType2', ''' |
1748 'testCompletion_newMemberType2', | |
1749 ''' | |
1750 class Collection{}class List extends Collection{}class Foo {!1}''', | 1382 class Collection{}class List extends Collection{}class Foo {!1}''', |
1751 <String>["1+Collection", "1+List"]); | 1383 <String>["1+Collection", "1+List"]); |
1752 | 1384 |
1753 buildTests( | 1385 buildTests('testCompletion_newMemberType3', ''' |
1754 'testCompletion_newMemberType3', | |
1755 ''' | |
1756 class Collection{}class List extends Collection{}class Foo {L!1}''', | 1386 class Collection{}class List extends Collection{}class Foo {L!1}''', |
1757 <String>["1-Collection", "1+List"]); | 1387 <String>["1-Collection", "1+List"]); |
1758 | 1388 |
1759 buildTests( | 1389 buildTests('testCompletion_newMemberType4', ''' |
1760 'testCompletion_newMemberType4', | |
1761 ''' | |
1762 class Collection{}class List extends Collection{}class Foo {C!1}''', | 1390 class Collection{}class List extends Collection{}class Foo {C!1}''', |
1763 <String>["1+Collection", "1-List"]); | 1391 <String>["1+Collection", "1-List"]); |
1764 | 1392 |
1765 buildTests( | 1393 buildTests( |
1766 'testCompletion_positionalArgument_constructor', | 1394 'testCompletion_positionalArgument_constructor', |
1767 ''' | 1395 ''' |
1768 class A { | 1396 class A { |
1769 A([foo, bar]); | 1397 A([foo, bar]); |
1770 } | 1398 } |
1771 main() { | 1399 main() { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1811 A v = new B(); | 1439 A v = new B(); |
1812 v.!1 | 1440 v.!1 |
1813 }''', | 1441 }''', |
1814 <String>[ | 1442 <String>[ |
1815 "1+foo", | 1443 "1+foo", |
1816 "1-bar,potential=false,declaringType=B", | 1444 "1-bar,potential=false,declaringType=B", |
1817 "1+bar,potential=true,declaringType=B" | 1445 "1+bar,potential=true,declaringType=B" |
1818 ], | 1446 ], |
1819 failingTests: '1'); | 1447 failingTests: '1'); |
1820 | 1448 |
1821 buildTests( | 1449 buildTests('testCompletion_privateElement_sameLibrary_constructor', ''' |
1822 'testCompletion_privateElement_sameLibrary_constructor', | |
1823 ''' | |
1824 class A { | 1450 class A { |
1825 A._c(); | 1451 A._c(); |
1826 A.c(); | 1452 A.c(); |
1827 } | 1453 } |
1828 main() { | 1454 main() { |
1829 new A.!1 | 1455 new A.!1 |
1830 }''', | 1456 }''', <String>["1+_c", "1+c"]); |
1831 <String>["1+_c", "1+c"]); | |
1832 | 1457 |
1833 buildTests( | 1458 buildTests('testCompletion_privateElement_sameLibrary_member', ''' |
1834 'testCompletion_privateElement_sameLibrary_member', | |
1835 ''' | |
1836 class A { | 1459 class A { |
1837 _m() {} | 1460 _m() {} |
1838 m() {} | 1461 m() {} |
1839 } | 1462 } |
1840 main(A a) { | 1463 main(A a) { |
1841 a.!1 | 1464 a.!1 |
1842 }''', | 1465 }''', <String>["1+_m", "1+m"]); |
1843 <String>["1+_m", "1+m"]); | |
1844 | 1466 |
1845 buildTests( | 1467 buildTests('testCompletion_propertyAccess_whenClassTarget', ''' |
1846 'testCompletion_propertyAccess_whenClassTarget', | |
1847 ''' | |
1848 class A { | 1468 class A { |
1849 static int FIELD; | 1469 static int FIELD; |
1850 int field; | 1470 int field; |
1851 } | 1471 } |
1852 main() { | 1472 main() { |
1853 A.!1 | 1473 A.!1 |
1854 }''', | 1474 }''', <String>["1+FIELD", "1-field"]); |
1855 <String>["1+FIELD", "1-field"]); | |
1856 | 1475 |
1857 buildTests( | 1476 buildTests('testCompletion_propertyAccess_whenClassTarget_excludeSuper', ''' |
1858 'testCompletion_propertyAccess_whenClassTarget_excludeSuper', | |
1859 ''' | |
1860 class A { | 1477 class A { |
1861 static int FIELD_A; | 1478 static int FIELD_A; |
1862 static int methodA() {} | 1479 static int methodA() {} |
1863 } | 1480 } |
1864 class B extends A { | 1481 class B extends A { |
1865 static int FIELD_B; | 1482 static int FIELD_B; |
1866 static int methodB() {} | 1483 static int methodB() {} |
1867 } | 1484 } |
1868 main() { | 1485 main() { |
1869 B.!1; | 1486 B.!1; |
1870 }''', | 1487 }''', <String>["1+FIELD_B", "1-FIELD_A", "1+methodB", "1-methodA"]); |
1871 <String>["1+FIELD_B", "1-FIELD_A", "1+methodB", "1-methodA"]); | |
1872 | 1488 |
1873 buildTests( | 1489 buildTests('testCompletion_propertyAccess_whenInstanceTarget', ''' |
1874 'testCompletion_propertyAccess_whenInstanceTarget', | |
1875 ''' | |
1876 class A { | 1490 class A { |
1877 static int FIELD; | 1491 static int FIELD; |
1878 int fieldA; | 1492 int fieldA; |
1879 } | 1493 } |
1880 class B { | 1494 class B { |
1881 A a; | 1495 A a; |
1882 } | 1496 } |
1883 class C extends A { | 1497 class C extends A { |
1884 int fieldC; | 1498 int fieldC; |
1885 } | 1499 } |
1886 main(B b, C c) { | 1500 main(B b, C c) { |
1887 b.a.!1; | 1501 b.a.!1; |
1888 c.!2; | 1502 c.!2; |
1889 }''', | 1503 }''', <String>["1-FIELD", "1+fieldA", "2+fieldC", "2+fieldA"]); |
1890 <String>["1-FIELD", "1+fieldA", "2+fieldC", "2+fieldA"]); | |
1891 | 1504 |
1892 buildTests( | 1505 buildTests('testCompletion_return_withIdentifierPrefix', ''' |
1893 'testCompletion_return_withIdentifierPrefix', | 1506 f() { var vvv = 42; return v!1 }''', <String>["1+vvv"]); |
1894 ''' | |
1895 f() { var vvv = 42; return v!1 }''', | |
1896 <String>["1+vvv"]); | |
1897 | 1507 |
1898 buildTests( | 1508 buildTests('testCompletion_return_withoutExpression', ''' |
1899 'testCompletion_return_withoutExpression', | 1509 f() { var vvv = 42; return !1 }''', <String>["1+vvv"]); |
1900 ''' | |
1901 f() { var vvv = 42; return !1 }''', | |
1902 <String>["1+vvv"]); | |
1903 | 1510 |
1904 buildTests( | 1511 buildTests('testCompletion_staticField1', ''' |
1905 'testCompletion_staticField1', | |
1906 ''' | |
1907 class num{}class Sunflower {static final n!2um MAX_D = 300;nu!3m xc, yc;Sun!4flo
wer() {x!Xc = y!Yc = MA!1 }}''', | 1512 class num{}class Sunflower {static final n!2um MAX_D = 300;nu!3m xc, yc;Sun!4flo
wer() {x!Xc = y!Yc = MA!1 }}''', |
1908 <String>["1+MAX_D", "X+xc", "Y+yc", "2+num", "3+num", "4+Sunflower"]); | 1513 <String>["1+MAX_D", "X+xc", "Y+yc", "2+num", "3+num", "4+Sunflower"]); |
1909 | 1514 |
1910 buildTests( | 1515 buildTests('testCompletion_super_superType', ''' |
1911 'testCompletion_super_superType', | |
1912 ''' | |
1913 class A { | 1516 class A { |
1914 var fa; | 1517 var fa; |
1915 ma() {} | 1518 ma() {} |
1916 } | 1519 } |
1917 class B extends A { | 1520 class B extends A { |
1918 var fb; | 1521 var fb; |
1919 mb() {} | 1522 mb() {} |
1920 main() { | 1523 main() { |
1921 super.!1 | 1524 super.!1 |
1922 } | 1525 } |
1923 }''', | 1526 }''', <String>["1+fa", "1-fb", "1+ma", "1-mb"]); |
1924 <String>["1+fa", "1-fb", "1+ma", "1-mb"]); | |
1925 | 1527 |
1926 buildTests( | 1528 buildTests( |
1927 'testCompletion_superConstructorInvocation_noNamePrefix', | 1529 'testCompletion_superConstructorInvocation_noNamePrefix', |
1928 ''' | 1530 ''' |
1929 class A { | 1531 class A { |
1930 A.fooA(); | 1532 A.fooA(); |
1931 A.fooB(); | 1533 A.fooB(); |
1932 A.bar(); | 1534 A.bar(); |
1933 } | 1535 } |
1934 class B extends A { | 1536 class B extends A { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1990 <String>["1-toString"], | 1592 <String>["1-toString"], |
1991 failingTests: '1'); | 1593 failingTests: '1'); |
1992 | 1594 |
1993 buildTests( | 1595 buildTests( |
1994 'testCompletion_this_bad_inTopLevelVariableDeclaration', | 1596 'testCompletion_this_bad_inTopLevelVariableDeclaration', |
1995 ''' | 1597 ''' |
1996 var v = this.!1;''', | 1598 var v = this.!1;''', |
1997 <String>["1-toString"], | 1599 <String>["1-toString"], |
1998 failingTests: '1'); | 1600 failingTests: '1'); |
1999 | 1601 |
2000 buildTests( | 1602 buildTests('testCompletion_this_OK_inConstructorBody', ''' |
2001 'testCompletion_this_OK_inConstructorBody', | |
2002 ''' | |
2003 class A { | 1603 class A { |
2004 var f; | 1604 var f; |
2005 m() {} | 1605 m() {} |
2006 A() { | 1606 A() { |
2007 this.!1; | 1607 this.!1; |
2008 } | 1608 } |
2009 }''', | 1609 }''', <String>["1+f", "1+m"]); |
2010 <String>["1+f", "1+m"]); | |
2011 | 1610 |
2012 buildTests( | 1611 buildTests('testCompletion_this_OK_localAndSuper', ''' |
2013 'testCompletion_this_OK_localAndSuper', | |
2014 ''' | |
2015 class A { | 1612 class A { |
2016 var fa; | 1613 var fa; |
2017 ma() {} | 1614 ma() {} |
2018 } | 1615 } |
2019 class B extends A { | 1616 class B extends A { |
2020 var fb; | 1617 var fb; |
2021 mb() {} | 1618 mb() {} |
2022 main() { | 1619 main() { |
2023 this.!1 | 1620 this.!1 |
2024 } | 1621 } |
2025 }''', | 1622 }''', <String>["1+fa", "1+fb", "1+ma", "1+mb"]); |
2026 <String>["1+fa", "1+fb", "1+ma", "1+mb"]); | |
2027 | 1623 |
2028 buildTests( | 1624 buildTests('testCompletion_topLevelField_init2', ''' |
2029 'testCompletion_topLevelField_init2', | |
2030 ''' | |
2031 class DateTime{static var JUN;}final num M = Dat!1eTime.JUN;''', | 1625 class DateTime{static var JUN;}final num M = Dat!1eTime.JUN;''', |
2032 <String>["1+DateTime", "1-void"]); | 1626 <String>["1+DateTime", "1-void"]); |
2033 | 1627 |
2034 buildTests( | 1628 buildTests('testCompletion_while', ''' |
2035 'testCompletion_while', | 1629 class Foo { int boo = 7; mth() { while (b!1) {} }}''', <String>["1+boo"]); |
2036 ''' | |
2037 class Foo { int boo = 7; mth() { while (b!1) {} }}''', | |
2038 <String>["1+boo"]); | |
2039 } | 1630 } |
2040 | 1631 |
2041 void buildLibraryTests() { | 1632 void buildLibraryTests() { |
2042 Map<String, String> sources = new HashMap<String, String>(); | 1633 Map<String, String> sources = new HashMap<String, String>(); |
2043 | 1634 |
2044 buildTests( | 1635 buildTests('test_export_ignoreIfThisLibraryExports', ''' |
2045 'test_export_ignoreIfThisLibraryExports', | |
2046 ''' | |
2047 export 'dart:math'; | 1636 export 'dart:math'; |
2048 libFunction() {}; | 1637 libFunction() {}; |
2049 main() { | 1638 main() { |
2050 !1 | 1639 !1 |
2051 }''', | 1640 }''', <String>["1-cos", "1+libFunction"]); |
2052 <String>["1-cos", "1+libFunction"]); | |
2053 | 1641 |
2054 sources.clear(); | 1642 sources.clear(); |
2055 sources["/lib.dart"] = ''' | 1643 sources["/lib.dart"] = ''' |
2056 library lib; | 1644 library lib; |
2057 export 'dart:math' hide sin; | 1645 export 'dart:math' hide sin; |
2058 libFunction() {};'''; | 1646 libFunction() {};'''; |
2059 buildTests( | 1647 buildTests( |
2060 'test_export_showIfImportLibraryWithExport', | 1648 'test_export_showIfImportLibraryWithExport', |
2061 ''' | 1649 ''' |
2062 import 'lib.dart' as p; | 1650 import 'lib.dart' as p; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2165 <String>["1+length", "1+isEmpty", "2+clear"], | 1753 <String>["1+length", "1+isEmpty", "2+clear"], |
2166 failingTests: '1'); | 1754 failingTests: '1'); |
2167 | 1755 |
2168 // TODO Include corelib analysis | 1756 // TODO Include corelib analysis |
2169 buildTests('testLibrary003', '''class X{var q; f() {q.!1a!2}}''', | 1757 buildTests('testLibrary003', '''class X{var q; f() {q.!1a!2}}''', |
2170 <String>["1+end", "2+abs", "2-end"], | 1758 <String>["1+end", "2+abs", "2-end"], |
2171 failingTests: '12'); | 1759 failingTests: '12'); |
2172 | 1760 |
2173 // TODO Include corelib analysis | 1761 // TODO Include corelib analysis |
2174 // Resolving dart:html takes between 2.5s and 30s; json, about 0.12s | 1762 // Resolving dart:html takes between 2.5s and 30s; json, about 0.12s |
2175 buildTests( | 1763 buildTests('testLibrary004', ''' |
2176 'testLibrary004', | |
2177 ''' | |
2178 library foo; | 1764 library foo; |
2179 import 'dart:convert' as json; | 1765 import 'dart:convert' as json; |
2180 class JsonDecoderX{} | 1766 class JsonDecoderX{} |
2181 f1() {var x=new json.!1} | 1767 f1() {var x=new json.!1} |
2182 f2() {var x=new json.JsonDe!2} | 1768 f2() {var x=new json.JsonDe!2} |
2183 f3() {var x=new json.JsonDecoder!3}''', | 1769 f3() {var x=new json.JsonDecoder!3}''', <String>[ |
2184 <String>[ | 1770 "1+JsonDecoder", |
2185 "1+JsonDecoder", | 1771 "1-JsonDecoderX", |
2186 "1-JsonDecoderX", | 1772 "2+JsonDecoder", |
2187 "2+JsonDecoder", | 1773 "2-JsonDecoderX", |
2188 "2-JsonDecoderX", | 1774 "3+JsonDecoder", |
2189 "3+JsonDecoder", | 1775 "3-JsonDecoderX" |
2190 "3-JsonDecoderX" | 1776 ]); |
2191 ]); | |
2192 | 1777 |
2193 // TODO Enable after type propagation is implemented. Not yet. | 1778 // TODO Enable after type propagation is implemented. Not yet. |
2194 // TODO Include corelib analysis | 1779 // TODO Include corelib analysis |
2195 buildTests('testLibrary005', | 1780 buildTests('testLibrary005', |
2196 '''var PHI;main(){PHI=5.3;PHI.abs().!1 Object x;}''', <String>["1+abs"], | 1781 '''var PHI;main(){PHI=5.3;PHI.abs().!1 Object x;}''', <String>["1+abs"], |
2197 failingTests: '1'); | 1782 failingTests: '1'); |
2198 | 1783 |
2199 // Exercise import and export handling. | 1784 // Exercise import and export handling. |
2200 // Libraries are defined in partial order of increasing dependency. | 1785 // Libraries are defined in partial order of increasing dependency. |
2201 sources.clear(); | 1786 sources.clear(); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2316 "3+Y", | 1901 "3+Y", |
2317 "4+Y", | 1902 "4+Y", |
2318 "4-m", | 1903 "4-m", |
2319 "4-X" | 1904 "4-X" |
2320 ], | 1905 ], |
2321 extraFiles: sources, | 1906 extraFiles: sources, |
2322 failingTests: '1234'); | 1907 failingTests: '1234'); |
2323 } | 1908 } |
2324 | 1909 |
2325 void buildNumberedTests() { | 1910 void buildNumberedTests() { |
2326 buildTests( | 1911 buildTests('test001', ''' |
2327 'test001', | |
2328 ''' | |
2329 void r1(var v) { | 1912 void r1(var v) { |
2330 v.!1toString!2().!3hash!4Code | 1913 v.!1toString!2().!3hash!4Code |
2331 }''', | 1914 }''', <String>[ |
2332 <String>[ | 1915 "1+toString", |
2333 "1+toString", | 1916 "1-==", |
2334 "1-==", | 1917 "2+toString", |
2335 "2+toString", | 1918 "3+hashCode", |
2336 "3+hashCode", | 1919 "3+toString", |
2337 "3+toString", | 1920 "4+hashCode", |
2338 "4+hashCode", | 1921 "4-toString" |
2339 "4-toString" | 1922 ]); |
2340 ]); | |
2341 | 1923 |
2342 buildTests( | 1924 buildTests('test002', ''' |
2343 'test002', | |
2344 ''' | |
2345 void r2(var vim) { | 1925 void r2(var vim) { |
2346 v!1.toString() | 1926 v!1.toString() |
2347 }''', | 1927 }''', <String>["1+vim"]); |
2348 <String>["1+vim"]); | |
2349 | 1928 |
2350 buildTests( | 1929 buildTests('test003', ''' |
2351 'test003', | |
2352 ''' | |
2353 class A { | 1930 class A { |
2354 int a() => 3; | 1931 int a() => 3; |
2355 int b() => this.!1a(); | 1932 int b() => this.!1a(); |
2356 }''', | 1933 }''', <String>["1+a"]); |
2357 <String>["1+a"]); | |
2358 | 1934 |
2359 buildTests( | 1935 buildTests( |
2360 'test004', | 1936 'test004', |
2361 ''' | 1937 ''' |
2362 class A { | 1938 class A { |
2363 int x; | 1939 int x; |
2364 A() : this.!1x = 1; | 1940 A() : this.!1x = 1; |
2365 A.b() : this(); | 1941 A.b() : this(); |
2366 A.c() : this.!2b(); | 1942 A.c() : this.!2b(); |
2367 g() => new A.!3c(); | 1943 g() => new A.!3c(); |
(...skipping 27 matching lines...) Expand all Loading... |
2395 "2-void", | 1971 "2-void", |
2396 "2-null", | 1972 "2-null", |
2397 "2-false", | 1973 "2-false", |
2398 "3+vf", | 1974 "3+vf", |
2399 "3+vq", | 1975 "3+vq", |
2400 "3+vim", | 1976 "3+vim", |
2401 "3-A" | 1977 "3-A" |
2402 ], | 1978 ], |
2403 failingTests: '1'); | 1979 failingTests: '1'); |
2404 | 1980 |
2405 buildTests( | 1981 buildTests('test006', ''' |
2406 'test006', | |
2407 ''' | |
2408 void r2(var vim, {va: 2, b: 3}) { | 1982 void r2(var vim, {va: 2, b: 3}) { |
2409 v!1.toString() | 1983 v!1.toString() |
2410 }''', | 1984 }''', <String>["1+va", "1-b"]); |
2411 <String>["1+va", "1-b"]); | |
2412 | 1985 |
2413 buildTests( | 1986 buildTests('test007', ''' |
2414 'test007', | |
2415 ''' | |
2416 void r2(var vim, [va: 2, b: 3]) { | 1987 void r2(var vim, [va: 2, b: 3]) { |
2417 v!1.toString() | 1988 v!1.toString() |
2418 }''', | 1989 }''', <String>["1+va", "1-b"]); |
2419 <String>["1+va", "1-b"]); | |
2420 | 1990 |
2421 // keywords | 1991 // keywords |
2422 buildTests( | 1992 buildTests( |
2423 'test008', | 1993 'test008', |
2424 ''' | 1994 ''' |
2425 !1class Aclass {} | 1995 !1class Aclass {} |
2426 class Bclass !2extends!3 !4Aclass {} | 1996 class Bclass !2extends!3 !4Aclass {} |
2427 !5abstract class Eclass implements Aclass, Bclass {} | 1997 !5abstract class Eclass implements Aclass, Bclass {} |
2428 class Fclass extends Bclass !6with !7 Eclass {}''', | 1998 class Fclass extends Bclass !6with !7 Eclass {}''', |
2429 <String>[ | 1999 <String>[ |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2626 "7+show", | 2196 "7+show", |
2627 "8-null" | 2197 "8-null" |
2628 ], | 2198 ], |
2629 failingTests: '234567'); //TODO(jwren) 234 failing as correct selection | 2199 failingTests: '234567'); //TODO(jwren) 234 failing as correct selection |
2630 // offset assertions can't be passed into buildTests(..) | 2200 // offset assertions can't be passed into buildTests(..) |
2631 | 2201 |
2632 // keywords | 2202 // keywords |
2633 buildTests('test018', '''!1part !2of foo;''', <String>["1+part", "2+of"], | 2203 buildTests('test018', '''!1part !2of foo;''', <String>["1+part", "2+of"], |
2634 failingTests: '12'); | 2204 failingTests: '12'); |
2635 | 2205 |
2636 buildTests( | 2206 buildTests('test019', ''' |
2637 'test019', | |
2638 ''' | |
2639 var truefalse = 0; | 2207 var truefalse = 0; |
2640 var falsetrue = 1; | 2208 var falsetrue = 1; |
2641 main() { | 2209 main() { |
2642 var foo = true!1 | 2210 var foo = true!1 |
2643 }''', | 2211 }''', <String>["1+true", "1+truefalse", "1-falsetrue"]); |
2644 <String>["1+true", "1+truefalse", "1-falsetrue"]); | |
2645 | 2212 |
2646 buildTests('test020', '''var x = null.!1''', <String>["1+toString"]); | 2213 buildTests('test020', '''var x = null.!1''', <String>["1+toString"]); |
2647 | 2214 |
2648 buildTests('test021', '''var x = .!1''', <String>["1-toString"]); | 2215 buildTests('test021', '''var x = .!1''', <String>["1-toString"]); |
2649 | 2216 |
2650 buildTests('test022', '''var x = .!1;''', <String>["1-toString"]); | 2217 buildTests('test022', '''var x = .!1;''', <String>["1-toString"]); |
2651 | 2218 |
2652 buildTests( | 2219 buildTests('test023', ''' |
2653 'test023', | |
2654 ''' | |
2655 class Map{getKeys(){}} | 2220 class Map{getKeys(){}} |
2656 class X { | 2221 class X { |
2657 static x1(Map m) { | 2222 static x1(Map m) { |
2658 m.!1getKeys; | 2223 m.!1getKeys; |
2659 } | 2224 } |
2660 x2(Map m) { | 2225 x2(Map m) { |
2661 m.!2getKeys; | 2226 m.!2getKeys; |
2662 } | 2227 } |
2663 }''', | 2228 }''', <String>["1+getKeys", "2+getKeys"]); |
2664 <String>["1+getKeys", "2+getKeys"]); | |
2665 | 2229 |
2666 // Note lack of semicolon following completion location | 2230 // Note lack of semicolon following completion location |
2667 buildTests( | 2231 buildTests('test024', ''' |
2668 'test024', | |
2669 ''' | |
2670 class List{factory List.from(Iterable other) {}} | 2232 class List{factory List.from(Iterable other) {}} |
2671 class F { | 2233 class F { |
2672 f() { | 2234 f() { |
2673 new List.!1 | 2235 new List.!1 |
2674 } | 2236 } |
2675 }''', | 2237 }''', <String>["1+from"]); |
2676 <String>["1+from"]); | |
2677 | 2238 |
2678 buildTests( | 2239 buildTests('test025', ''' |
2679 'test025', | |
2680 ''' | |
2681 class R { | 2240 class R { |
2682 static R _m; | 2241 static R _m; |
2683 static R m; | 2242 static R m; |
2684 f() { | 2243 f() { |
2685 var a = !1m; | 2244 var a = !1m; |
2686 var b = _!2m; | 2245 var b = _!2m; |
2687 var c = !3g(); | 2246 var c = !3g(); |
2688 } | 2247 } |
2689 static g() { | 2248 static g() { |
2690 var a = !4m; | 2249 var a = !4m; |
(...skipping 11 matching lines...) Expand all Loading... |
2702 static g() { | 2261 static g() { |
2703 var q = R._!Am; | 2262 var q = R._!Am; |
2704 var g = R.!Bm; | 2263 var g = R.!Bm; |
2705 var h = R.!Cg(); | 2264 var h = R.!Cg(); |
2706 } | 2265 } |
2707 h() { | 2266 h() { |
2708 var q = R._!Dm; | 2267 var q = R._!Dm; |
2709 var g = R.!Em; | 2268 var g = R.!Em; |
2710 var h = R.!Fg(); | 2269 var h = R.!Fg(); |
2711 } | 2270 } |
2712 }''', | 2271 }''', <String>[ |
2713 <String>[ | 2272 "1+m", |
2714 "1+m", | 2273 "2+_m", |
2715 "2+_m", | 2274 "3+g", |
2716 "3+g", | 2275 "4+m", |
2717 "4+m", | 2276 "5+_m", |
2718 "5+_m", | 2277 "6+g", |
2719 "6+g", | 2278 "7-g", |
2720 "7-g", | 2279 "8-m", |
2721 "8-m", | 2280 "9-_m", |
2722 "9-_m", | 2281 "A+_m", |
2723 "A+_m", | 2282 "B+m", |
2724 "B+m", | 2283 "C+g", |
2725 "C+g", | 2284 "D+_m", |
2726 "D+_m", | 2285 "E+m", |
2727 "E+m", | 2286 "F+g" |
2728 "F+g" | 2287 ]); |
2729 ]); | |
2730 | 2288 |
2731 buildTests('test026', '''var aBcD; var x=ab!1''', <String>["1+aBcD"]); | 2289 buildTests('test026', '''var aBcD; var x=ab!1''', <String>["1+aBcD"]); |
2732 | 2290 |
2733 buildTests( | 2291 buildTests( |
2734 'test027', '''m(){try{}catch(eeee,ssss){s!1}''', <String>["1+ssss"]); | 2292 'test027', '''m(){try{}catch(eeee,ssss){s!1}''', <String>["1+ssss"]); |
2735 | 2293 |
2736 buildTests('test028', '''m(){var isX=3;if(is!1)''', <String>["1+isX"]); | 2294 buildTests('test028', '''m(){var isX=3;if(is!1)''', <String>["1+isX"]); |
2737 | 2295 |
2738 buildTests('test029', '''m(){[1].forEach((x)=>!1x);}''', <String>["1+x"]); | 2296 buildTests('test029', '''m(){[1].forEach((x)=>!1x);}''', <String>["1+x"]); |
2739 | 2297 |
2740 buildTests('test030', '''n(){[1].forEach((x){!1});}''', <String>["1+x"]); | 2298 buildTests('test030', '''n(){[1].forEach((x){!1});}''', <String>["1+x"]); |
2741 | 2299 |
2742 buildTests( | 2300 buildTests( |
2743 'test031', | 2301 'test031', |
2744 '''class Caster {} m() {try {} on Cas!1ter catch (CastBlock) {!2}}''', | 2302 '''class Caster {} m() {try {} on Cas!1ter catch (CastBlock) {!2}}''', |
2745 <String>["1+Caster", "1-CastBlock", "2+Caster", "2+CastBlock"]); | 2303 <String>["1+Caster", "1-CastBlock", "2+Caster", "2+CastBlock"]); |
2746 | 2304 |
2747 buildTests( | 2305 buildTests('test032', ''' |
2748 'test032', | |
2749 ''' | |
2750 const ONE = 1; | 2306 const ONE = 1; |
2751 const ICHI = 10; | 2307 const ICHI = 10; |
2752 const UKSI = 100; | 2308 const UKSI = 100; |
2753 const EIN = 1000; | 2309 const EIN = 1000; |
2754 m() { | 2310 m() { |
2755 int x; | 2311 int x; |
2756 switch (x) { | 2312 switch (x) { |
2757 case !3ICHI: | 2313 case !3ICHI: |
2758 case UKSI: | 2314 case UKSI: |
2759 case EIN!2: | 2315 case EIN!2: |
2760 case ONE!1: return; | 2316 case ONE!1: return; |
2761 default: return; | 2317 default: return; |
2762 } | 2318 } |
2763 }''', | 2319 }''', <String>[ |
2764 <String>[ | 2320 "1+ONE", |
2765 "1+ONE", | 2321 "1-UKSI", |
2766 "1-UKSI", | 2322 "2+EIN", |
2767 "2+EIN", | 2323 "2-ICHI", |
2768 "2-ICHI", | 2324 "3+ICHI", |
2769 "3+ICHI", | 2325 "3+UKSI", |
2770 "3+UKSI", | 2326 "3+EIN", |
2771 "3+EIN", | 2327 "3+ONE" |
2772 "3+ONE" | 2328 ]); |
2773 ]); | |
2774 | 2329 |
2775 buildTests( | 2330 buildTests( |
2776 'test033', | 2331 'test033', |
2777 '''class A{}class B extends A{b(){}}class C implements A {c(){}}class X{
x(){A f;f.!1}}''', | 2332 '''class A{}class B extends A{b(){}}class C implements A {c(){}}class X{
x(){A f;f.!1}}''', |
2778 <String>["1+b", "1-c"], | 2333 <String>["1+b", "1-c"], |
2779 failingTests: '1'); | 2334 failingTests: '1'); |
2780 | 2335 |
2781 // TODO(scheglov) decide what to do with Type for untyped field (not | 2336 // TODO(scheglov) decide what to do with Type for untyped field (not |
2782 // supported by the new store) | 2337 // supported by the new store) |
2783 // test analysis of untyped fields and top-level vars | 2338 // test analysis of untyped fields and top-level vars |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2953 } else { | 2508 } else { |
2954 ++expectedPassCount; | 2509 ++expectedPassCount; |
2955 test(testName, () { | 2510 test(testName, () { |
2956 CompletionTestCase test = new CompletionTestCase(); | 2511 CompletionTestCase test = new CompletionTestCase(); |
2957 return test.runTest(spec, extraFiles); | 2512 return test.runTest(spec, extraFiles); |
2958 }); | 2513 }); |
2959 } | 2514 } |
2960 } | 2515 } |
2961 } | 2516 } |
2962 } | 2517 } |
OLD | NEW |