Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(203)

Side by Side Diff: tests/compiler/dart2js/patch_test.dart

Issue 2935663002: Remove Compiler.commonElements (Closed)
Patch Set: Remove Compiler._commonElements Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 'package:expect/expect.dart'; 6 import 'package:expect/expect.dart';
7 import 'package:async_helper/async_helper.dart'; 7 import 'package:async_helper/async_helper.dart';
8 import 'package:compiler/src/compiler.dart'; 8 import 'package:compiler/src/compiler.dart';
9 import 'package:compiler/src/diagnostics/messages.dart' show MessageKind; 9 import 'package:compiler/src/diagnostics/messages.dart' show MessageKind;
10 import 'package:compiler/src/elements/elements.dart'; 10 import 'package:compiler/src/elements/elements.dart';
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 expectHasBody(compiler, element); 114 expectHasBody(compiler, element);
115 } 115 }
116 } 116 }
117 Expect.isFalse(element.isPatched && element.isPatch); 117 Expect.isFalse(element.isPatched && element.isPatch);
118 return element; 118 return element;
119 } 119 }
120 120
121 Future testPatchFunction() async { 121 Future testPatchFunction() async {
122 var compiler = await applyPatch( 122 var compiler = await applyPatch(
123 "external test();", "@patch test() { return 'string'; } "); 123 "external test();", "@patch test() { return 'string'; } ");
124 ensure(compiler, "test", compiler.commonElements.coreLibrary.find, 124 ensure(compiler, "test", compiler.resolution.commonElements.coreLibrary.find,
125 expectIsPatched: true, checkHasBody: true); 125 expectIsPatched: true, checkHasBody: true);
126 ensure(compiler, "test", compiler.commonElements.coreLibrary.patch.find, 126 ensure(compiler, "test",
127 compiler.resolution.commonElements.coreLibrary.patch.find,
127 expectIsPatch: true, checkHasBody: true); 128 expectIsPatch: true, checkHasBody: true);
128 129
129 DiagnosticCollector collector = compiler.diagnosticCollector; 130 DiagnosticCollector collector = compiler.diagnosticCollector;
130 Expect.isTrue( 131 Expect.isTrue(
131 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 132 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
132 Expect.isTrue( 133 Expect.isTrue(
133 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 134 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
134 } 135 }
135 136
136 Future testPatchFunctionMetadata() async { 137 Future testPatchFunctionMetadata() async {
137 var compiler = await applyPatch( 138 var compiler = await applyPatch(
138 """ 139 """
139 const a = 0; 140 const a = 0;
140 @a external test(); 141 @a external test();
141 """, 142 """,
142 """ 143 """
143 const _b = 1; 144 const _b = 1;
144 @patch @_b test() {} 145 @patch @_b test() {}
145 """); 146 """);
146 Element origin = ensure( 147 Element origin = ensure(
147 compiler, "test", compiler.commonElements.coreLibrary.find, 148 compiler, "test", compiler.resolution.commonElements.coreLibrary.find,
148 expectIsPatched: true, checkHasBody: true); 149 expectIsPatched: true, checkHasBody: true);
149 Element patch = ensure( 150 Element patch = ensure(compiler, "test",
150 compiler, "test", compiler.commonElements.coreLibrary.patch.find, 151 compiler.resolution.commonElements.coreLibrary.patch.find,
151 expectIsPatch: true, checkHasBody: true); 152 expectIsPatch: true, checkHasBody: true);
152 153
153 DiagnosticCollector collector = compiler.diagnosticCollector; 154 DiagnosticCollector collector = compiler.diagnosticCollector;
154 Expect.isTrue( 155 Expect.isTrue(
155 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 156 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
156 Expect.isTrue( 157 Expect.isTrue(
157 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 158 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
158 159
159 Expect.equals(1, origin.metadata.length, 160 Expect.equals(1, origin.metadata.length,
160 "Unexpected origin metadata: ${origin.metadata}."); 161 "Unexpected origin metadata: ${origin.metadata}.");
161 Expect.equals(3, patch.metadata.length, 162 Expect.equals(3, patch.metadata.length,
162 "Unexpected patch metadata: ${patch.metadata}."); 163 "Unexpected patch metadata: ${patch.metadata}.");
163 } 164 }
164 165
165 Future testPatchFunctionGeneric() async { 166 Future testPatchFunctionGeneric() async {
166 var compiler = await applyPatch( 167 var compiler = await applyPatch(
167 "external T test<T>();", "@patch T test<T>() { return null; } "); 168 "external T test<T>();", "@patch T test<T>() { return null; } ");
168 Element origin = ensure( 169 Element origin = ensure(
169 compiler, "test", compiler.commonElements.coreLibrary.find, 170 compiler, "test", compiler.resolution.commonElements.coreLibrary.find,
170 expectIsPatched: true, checkHasBody: true); 171 expectIsPatched: true, checkHasBody: true);
171 ensure(compiler, "test", compiler.commonElements.coreLibrary.patch.find, 172 ensure(compiler, "test",
173 compiler.resolution.commonElements.coreLibrary.patch.find,
172 expectIsPatch: true, checkHasBody: true); 174 expectIsPatch: true, checkHasBody: true);
173 compiler.resolver.resolve(origin); 175 compiler.resolver.resolve(origin);
174 176
175 DiagnosticCollector collector = compiler.diagnosticCollector; 177 DiagnosticCollector collector = compiler.diagnosticCollector;
176 Expect.isTrue( 178 Expect.isTrue(
177 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 179 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
178 Expect.isTrue( 180 Expect.isTrue(
179 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 181 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
180 } 182 }
181 183
182 Future testPatchFunctionGenericExtraTypeVariable() async { 184 Future testPatchFunctionGenericExtraTypeVariable() async {
183 var compiler = await applyPatch( 185 var compiler = await applyPatch(
184 "external T test<T>();", "@patch T test<T, S>() { return null; } "); 186 "external T test<T>();", "@patch T test<T, S>() { return null; } ");
185 Element origin = ensure( 187 Element origin = ensure(
186 compiler, "test", compiler.commonElements.coreLibrary.find, 188 compiler, "test", compiler.resolution.commonElements.coreLibrary.find,
187 expectIsPatched: true, checkHasBody: true); 189 expectIsPatched: true, checkHasBody: true);
188 ensure(compiler, "test", compiler.commonElements.coreLibrary.patch.find, 190 ensure(compiler, "test",
191 compiler.resolution.commonElements.coreLibrary.patch.find,
189 expectIsPatch: true, checkHasBody: true); 192 expectIsPatch: true, checkHasBody: true);
190 compiler.resolver.resolve(origin); 193 compiler.resolver.resolve(origin);
191 194
192 DiagnosticCollector collector = compiler.diagnosticCollector; 195 DiagnosticCollector collector = compiler.diagnosticCollector;
193 Expect.isTrue( 196 Expect.isTrue(
194 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 197 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
195 Expect.equals(1, collector.errors.length); 198 Expect.equals(1, collector.errors.length);
196 Expect.isTrue(collector.errors.first.message.kind == 199 Expect.isTrue(collector.errors.first.message.kind ==
197 MessageKind.PATCH_TYPE_VARIABLES_MISMATCH); 200 MessageKind.PATCH_TYPE_VARIABLES_MISMATCH);
198 } 201 }
199 202
200 Future testPatchFunctionGenericDifferentNames() async { 203 Future testPatchFunctionGenericDifferentNames() async {
201 var compiler = await applyPatch( 204 var compiler = await applyPatch(
202 "external T test<T, S>();", "@patch T test<S, T>() { return null; } "); 205 "external T test<T, S>();", "@patch T test<S, T>() { return null; } ");
203 Element origin = ensure( 206 Element origin = ensure(
204 compiler, "test", compiler.commonElements.coreLibrary.find, 207 compiler, "test", compiler.resolution.commonElements.coreLibrary.find,
205 expectIsPatched: true, checkHasBody: true); 208 expectIsPatched: true, checkHasBody: true);
206 ensure(compiler, "test", compiler.commonElements.coreLibrary.patch.find, 209 ensure(compiler, "test",
210 compiler.resolution.commonElements.coreLibrary.patch.find,
207 expectIsPatch: true, checkHasBody: true); 211 expectIsPatch: true, checkHasBody: true);
208 compiler.resolver.resolve(origin); 212 compiler.resolver.resolve(origin);
209 213
210 DiagnosticCollector collector = compiler.diagnosticCollector; 214 DiagnosticCollector collector = compiler.diagnosticCollector;
211 Expect.isTrue( 215 Expect.isTrue(
212 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 216 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
213 Expect.equals(1, collector.errors.length); 217 Expect.equals(1, collector.errors.length);
214 Expect.isTrue(collector.errors.first.message.kind == 218 Expect.isTrue(collector.errors.first.message.kind ==
215 MessageKind.PATCH_TYPE_VARIABLES_MISMATCH); 219 MessageKind.PATCH_TYPE_VARIABLES_MISMATCH);
216 } 220 }
217 221
218 Future testPatchConstructor() async { 222 Future testPatchConstructor() async {
219 var compiler = await applyPatch( 223 var compiler = await applyPatch(
220 """ 224 """
221 class Class { 225 class Class {
222 external Class(); 226 external Class();
223 } 227 }
224 """, 228 """,
225 """ 229 """
226 @patch class Class { 230 @patch class Class {
227 @patch Class(); 231 @patch Class();
228 } 232 }
229 """); 233 """);
230 var classOrigin = ensure( 234 var classOrigin = ensure(
231 compiler, "Class", compiler.commonElements.coreLibrary.find, 235 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
232 expectIsPatched: true); 236 expectIsPatched: true);
233 classOrigin.ensureResolved(compiler.resolution); 237 classOrigin.ensureResolved(compiler.resolution);
234 var classPatch = ensure( 238 var classPatch = ensure(compiler, "Class",
235 compiler, "Class", compiler.commonElements.coreLibrary.patch.find, 239 compiler.resolution.commonElements.coreLibrary.patch.find,
236 expectIsPatch: true); 240 expectIsPatch: true);
237 241
238 Expect.equals(classPatch, classOrigin.patch); 242 Expect.equals(classPatch, classOrigin.patch);
239 Expect.equals(classOrigin, classPatch.origin); 243 Expect.equals(classOrigin, classPatch.origin);
240 244
241 var constructorOrigin = ensure( 245 var constructorOrigin = ensure(
242 compiler, "", (name) => classOrigin.localLookup(name), 246 compiler, "", (name) => classOrigin.localLookup(name),
243 expectIsPatched: true); 247 expectIsPatched: true);
244 var constructorPatch = ensure( 248 var constructorPatch = ensure(
245 compiler, "", (name) => classPatch.localLookup(name), 249 compiler, "", (name) => classPatch.localLookup(name),
(...skipping 17 matching lines...) Expand all
263 267
264 external Class._(x, y); 268 external Class._(x, y);
265 } 269 }
266 """, 270 """,
267 r""" 271 r"""
268 @patch class Class { 272 @patch class Class {
269 @patch Class._(x, y) { print('$x,$y'); } 273 @patch Class._(x, y) { print('$x,$y'); }
270 } 274 }
271 """); 275 """);
272 var classOrigin = ensure( 276 var classOrigin = ensure(
273 compiler, "Class", compiler.commonElements.coreLibrary.find, 277 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
274 expectIsPatched: true); 278 expectIsPatched: true);
275 classOrigin.ensureResolved(compiler.resolution); 279 classOrigin.ensureResolved(compiler.resolution);
276 280
277 var classPatch = ensure( 281 var classPatch = ensure(compiler, "Class",
278 compiler, "Class", compiler.commonElements.coreLibrary.patch.find, 282 compiler.resolution.commonElements.coreLibrary.patch.find,
279 expectIsPatch: true); 283 expectIsPatch: true);
280 284
281 Expect.equals(classOrigin, classPatch.origin); 285 Expect.equals(classOrigin, classPatch.origin);
282 Expect.equals(classPatch, classOrigin.patch); 286 Expect.equals(classPatch, classOrigin.patch);
283 287
284 var constructorRedirecting = 288 var constructorRedirecting =
285 ensure(compiler, "", (name) => classOrigin.localLookup(name)); 289 ensure(compiler, "", (name) => classOrigin.localLookup(name));
286 var constructorOrigin = ensure( 290 var constructorOrigin = ensure(
287 compiler, "_", (name) => classOrigin.localLookup(name), 291 compiler, "_", (name) => classOrigin.localLookup(name),
288 expectIsPatched: true); 292 expectIsPatched: true);
(...skipping 18 matching lines...) Expand all
307 class Class { 311 class Class {
308 external String toString(); 312 external String toString();
309 } 313 }
310 """, 314 """,
311 """ 315 """
312 @patch class Class { 316 @patch class Class {
313 @patch String toString() => 'string'; 317 @patch String toString() => 'string';
314 } 318 }
315 """); 319 """);
316 var container = ensure( 320 var container = ensure(
317 compiler, "Class", compiler.commonElements.coreLibrary.find, 321 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
318 expectIsPatched: true); 322 expectIsPatched: true);
319 container.parseNode(compiler.parsingContext); 323 container.parseNode(compiler.parsingContext);
320 ensure(compiler, "Class", compiler.commonElements.coreLibrary.patch.find, 324 ensure(compiler, "Class",
325 compiler.resolution.commonElements.coreLibrary.patch.find,
321 expectIsPatch: true); 326 expectIsPatch: true);
322 327
323 ensure(compiler, "toString", container.lookupLocalMember, 328 ensure(compiler, "toString", container.lookupLocalMember,
324 expectIsPatched: true, checkHasBody: true); 329 expectIsPatched: true, checkHasBody: true);
325 ensure(compiler, "toString", container.patch.lookupLocalMember, 330 ensure(compiler, "toString", container.patch.lookupLocalMember,
326 expectIsPatch: true, checkHasBody: true); 331 expectIsPatch: true, checkHasBody: true);
327 332
328 DiagnosticCollector collector = compiler.diagnosticCollector; 333 DiagnosticCollector collector = compiler.diagnosticCollector;
329 Expect.isTrue( 334 Expect.isTrue(
330 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 335 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
331 Expect.isTrue( 336 Expect.isTrue(
332 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 337 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
333 } 338 }
334 339
335 Future testPatchGetter() async { 340 Future testPatchGetter() async {
336 var compiler = await applyPatch( 341 var compiler = await applyPatch(
337 """ 342 """
338 class Class { 343 class Class {
339 external int get field; 344 external int get field;
340 } 345 }
341 """, 346 """,
342 """ 347 """
343 @patch class Class { 348 @patch class Class {
344 @patch int get field => 5; 349 @patch int get field => 5;
345 } 350 }
346 """); 351 """);
347 var container = ensure( 352 var container = ensure(
348 compiler, "Class", compiler.commonElements.coreLibrary.find, 353 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
349 expectIsPatched: true); 354 expectIsPatched: true);
350 container.parseNode(compiler.parsingContext); 355 container.parseNode(compiler.parsingContext);
351 ensure(compiler, "field", container.lookupLocalMember, 356 ensure(compiler, "field", container.lookupLocalMember,
352 expectIsGetter: true, expectIsPatched: true, checkHasBody: true); 357 expectIsGetter: true, expectIsPatched: true, checkHasBody: true);
353 ensure(compiler, "field", container.patch.lookupLocalMember, 358 ensure(compiler, "field", container.patch.lookupLocalMember,
354 expectIsGetter: true, expectIsPatch: true, checkHasBody: true); 359 expectIsGetter: true, expectIsPatch: true, checkHasBody: true);
355 360
356 DiagnosticCollector collector = compiler.diagnosticCollector; 361 DiagnosticCollector collector = compiler.diagnosticCollector;
357 Expect.isTrue( 362 Expect.isTrue(
358 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 363 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
359 Expect.isTrue( 364 Expect.isTrue(
360 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 365 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
361 } 366 }
362 367
363 Future testRegularMember() async { 368 Future testRegularMember() async {
364 var compiler = await applyPatch( 369 var compiler = await applyPatch(
365 """ 370 """
366 class Class { 371 class Class {
367 void regular() {} 372 void regular() {}
368 } 373 }
369 """, 374 """,
370 """ 375 """
371 @patch class Class { 376 @patch class Class {
372 } 377 }
373 """); 378 """);
374 var container = ensure( 379 var container = ensure(
375 compiler, "Class", compiler.commonElements.coreLibrary.find, 380 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
376 expectIsPatched: true); 381 expectIsPatched: true);
377 container.parseNode(compiler.parsingContext); 382 container.parseNode(compiler.parsingContext);
378 ensure(compiler, "Class", compiler.commonElements.coreLibrary.patch.find, 383 ensure(compiler, "Class",
384 compiler.resolution.commonElements.coreLibrary.patch.find,
379 expectIsPatch: true); 385 expectIsPatch: true);
380 386
381 ensure(compiler, "regular", container.lookupLocalMember, 387 ensure(compiler, "regular", container.lookupLocalMember,
382 checkHasBody: true, expectIsRegular: true); 388 checkHasBody: true, expectIsRegular: true);
383 ensure(compiler, "regular", container.patch.lookupLocalMember, 389 ensure(compiler, "regular", container.patch.lookupLocalMember,
384 checkHasBody: true, expectIsRegular: true); 390 checkHasBody: true, expectIsRegular: true);
385 391
386 DiagnosticCollector collector = compiler.diagnosticCollector; 392 DiagnosticCollector collector = compiler.diagnosticCollector;
387 Expect.isTrue( 393 Expect.isTrue(
388 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 394 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
389 Expect.isTrue( 395 Expect.isTrue(
390 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 396 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
391 } 397 }
392 398
393 Future testInjectedMember() async { 399 Future testInjectedMember() async {
394 var compiler = await applyPatch( 400 var compiler = await applyPatch(
395 """ 401 """
396 class Class { 402 class Class {
397 } 403 }
398 """, 404 """,
399 """ 405 """
400 @patch class Class { 406 @patch class Class {
401 void _injected() {} 407 void _injected() {}
402 } 408 }
403 """); 409 """);
404 var container = ensure( 410 var container = ensure(
405 compiler, "Class", compiler.commonElements.coreLibrary.find, 411 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
406 expectIsPatched: true); 412 expectIsPatched: true);
407 container.parseNode(compiler.parsingContext); 413 container.parseNode(compiler.parsingContext);
408 ensure(compiler, "Class", compiler.commonElements.coreLibrary.patch.find, 414 ensure(compiler, "Class",
415 compiler.resolution.commonElements.coreLibrary.patch.find,
409 expectIsPatch: true); 416 expectIsPatch: true);
410 417
411 ensure(compiler, "_injected", container.lookupLocalMember, 418 ensure(compiler, "_injected", container.lookupLocalMember,
412 expectIsFound: false); 419 expectIsFound: false);
413 ensure(compiler, "_injected", container.patch.lookupLocalMember, 420 ensure(compiler, "_injected", container.patch.lookupLocalMember,
414 checkHasBody: true, expectIsRegular: true); 421 checkHasBody: true, expectIsRegular: true);
415 422
416 DiagnosticCollector collector = compiler.diagnosticCollector; 423 DiagnosticCollector collector = compiler.diagnosticCollector;
417 Expect.isTrue( 424 Expect.isTrue(
418 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 425 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
419 Expect.isTrue( 426 Expect.isTrue(
420 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 427 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
421 } 428 }
422 429
423 Future testInjectedPublicMember() async { 430 Future testInjectedPublicMember() async {
424 var compiler = await applyPatch( 431 var compiler = await applyPatch(
425 """ 432 """
426 class Class { 433 class Class {
427 } 434 }
428 """, 435 """,
429 """ 436 """
430 @patch class Class { 437 @patch class Class {
431 void injected() {} 438 void injected() {}
432 } 439 }
433 """); 440 """);
434 var container = ensure( 441 var container = ensure(
435 compiler, "Class", compiler.commonElements.coreLibrary.find, 442 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
436 expectIsPatched: true); 443 expectIsPatched: true);
437 container.parseNode(compiler.parsingContext); 444 container.parseNode(compiler.parsingContext);
438 ensure(compiler, "Class", compiler.commonElements.coreLibrary.patch.find, 445 ensure(compiler, "Class",
446 compiler.resolution.commonElements.coreLibrary.patch.find,
439 expectIsPatch: true); 447 expectIsPatch: true);
440 448
441 ensure(compiler, "injected", container.lookupLocalMember, 449 ensure(compiler, "injected", container.lookupLocalMember,
442 expectIsFound: false); 450 expectIsFound: false);
443 ensure(compiler, "injected", container.patch.lookupLocalMember, 451 ensure(compiler, "injected", container.patch.lookupLocalMember,
444 checkHasBody: true, expectIsRegular: true); 452 checkHasBody: true, expectIsRegular: true);
445 453
446 DiagnosticCollector collector = compiler.diagnosticCollector; 454 DiagnosticCollector collector = compiler.diagnosticCollector;
447 Expect.isTrue( 455 Expect.isTrue(
448 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 456 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
449 Expect.equals( 457 Expect.equals(
450 1, collector.errors.length, "Unexpected errors: ${collector.errors}"); 458 1, collector.errors.length, "Unexpected errors: ${collector.errors}");
451 Expect.isTrue(collector.errors.first.message.kind == 459 Expect.isTrue(collector.errors.first.message.kind ==
452 MessageKind.INJECTED_PUBLIC_MEMBER); 460 MessageKind.INJECTED_PUBLIC_MEMBER);
453 } 461 }
454 462
455 Future testInjectedFunction() async { 463 Future testInjectedFunction() async {
456 var compiler = await applyPatch("", "int _function() => 5;"); 464 var compiler = await applyPatch("", "int _function() => 5;");
457 ensure(compiler, "_function", compiler.commonElements.coreLibrary.find, 465 ensure(compiler, "_function",
466 compiler.resolution.commonElements.coreLibrary.find,
458 expectIsFound: false); 467 expectIsFound: false);
459 ensure(compiler, "_function", compiler.commonElements.coreLibrary.patch.find, 468 ensure(compiler, "_function",
469 compiler.resolution.commonElements.coreLibrary.patch.find,
460 checkHasBody: true, expectIsRegular: true); 470 checkHasBody: true, expectIsRegular: true);
461 471
462 DiagnosticCollector collector = compiler.diagnosticCollector; 472 DiagnosticCollector collector = compiler.diagnosticCollector;
463 Expect.isTrue( 473 Expect.isTrue(
464 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 474 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
465 Expect.isTrue( 475 Expect.isTrue(
466 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}"); 476 collector.errors.isEmpty, "Unexpected errors: ${collector.errors}");
467 } 477 }
468 478
469 Future testInjectedPublicFunction() async { 479 Future testInjectedPublicFunction() async {
470 var compiler = await applyPatch("", "int function() => 5;"); 480 var compiler = await applyPatch("", "int function() => 5;");
471 ensure(compiler, "function", compiler.commonElements.coreLibrary.find, 481 ensure(
482 compiler, "function", compiler.resolution.commonElements.coreLibrary.find,
472 expectIsFound: false); 483 expectIsFound: false);
473 ensure(compiler, "function", compiler.commonElements.coreLibrary.patch.find, 484 ensure(compiler, "function",
485 compiler.resolution.commonElements.coreLibrary.patch.find,
474 checkHasBody: true, expectIsRegular: true); 486 checkHasBody: true, expectIsRegular: true);
475 487
476 DiagnosticCollector collector = compiler.diagnosticCollector; 488 DiagnosticCollector collector = compiler.diagnosticCollector;
477 Expect.isTrue( 489 Expect.isTrue(
478 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 490 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
479 Expect.equals( 491 Expect.equals(
480 1, collector.errors.length, "Unexpected errors: ${collector.errors}"); 492 1, collector.errors.length, "Unexpected errors: ${collector.errors}");
481 Expect.isTrue(collector.errors.first.message.kind == 493 Expect.isTrue(collector.errors.first.message.kind ==
482 MessageKind.INJECTED_PUBLIC_MEMBER); 494 MessageKind.INJECTED_PUBLIC_MEMBER);
483 } 495 }
(...skipping 24 matching lines...) Expand all
508 @patch void method5() {} 520 @patch void method5() {}
509 @patch void method6([String str]) {} 521 @patch void method6([String str]) {}
510 @patch void method7([String s2]) {} 522 @patch void method7([String s2]) {}
511 @patch void method8({String s2}) {} 523 @patch void method8({String s2}) {}
512 @patch void method9(int str) {} 524 @patch void method9(int str) {}
513 @patch void method10([int str]) {} 525 @patch void method10([int str]) {}
514 @patch void method11({int str}) {} 526 @patch void method11({int str}) {}
515 } 527 }
516 """); 528 """);
517 var container = ensure( 529 var container = ensure(
518 compiler, "Class", compiler.commonElements.coreLibrary.find, 530 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
519 expectIsPatched: true); 531 expectIsPatched: true);
520 container.ensureResolved(compiler.resolution); 532 container.ensureResolved(compiler.resolution);
521 container.parseNode(compiler.parsingContext); 533 container.parseNode(compiler.parsingContext);
522 DiagnosticCollector collector = compiler.diagnosticCollector; 534 DiagnosticCollector collector = compiler.diagnosticCollector;
523 535
524 void expect(String methodName, List infos, List errors) { 536 void expect(String methodName, List infos, List errors) {
525 collector.clear(); 537 collector.clear();
526 compiler.resolver.resolveMethodElement(ensure( 538 compiler.resolver.resolveMethodElement(ensure(
527 compiler, methodName, container.lookupLocalMember, 539 compiler, methodName, container.lookupLocalMember,
528 expectIsPatched: true, checkHasBody: true)); 540 expectIsPatched: true, checkHasBody: true));
(...skipping 30 matching lines...) Expand all
559 } 571 }
560 572
561 Future testExternalWithoutImplementationTopLevel() async { 573 Future testExternalWithoutImplementationTopLevel() async {
562 var compiler = await applyPatch( 574 var compiler = await applyPatch(
563 """ 575 """
564 external void foo(); 576 external void foo();
565 """, 577 """,
566 """ 578 """
567 // @patch void foo() {} 579 // @patch void foo() {}
568 """); 580 """);
569 var function = 581 var function = ensure(
570 ensure(compiler, "foo", compiler.commonElements.coreLibrary.find); 582 compiler, "foo", compiler.resolution.commonElements.coreLibrary.find);
571 compiler.resolver.resolve(function); 583 compiler.resolver.resolve(function);
572 DiagnosticCollector collector = compiler.diagnosticCollector; 584 DiagnosticCollector collector = compiler.diagnosticCollector;
573 Expect.isTrue( 585 Expect.isTrue(
574 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 586 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
575 print('testExternalWithoutImplementationTopLevel:${collector.errors}'); 587 print('testExternalWithoutImplementationTopLevel:${collector.errors}');
576 Expect.equals(1, collector.errors.length); 588 Expect.equals(1, collector.errors.length);
577 Expect.isTrue(collector.errors.first.message.kind == 589 Expect.isTrue(collector.errors.first.message.kind ==
578 MessageKind.PATCH_EXTERNAL_WITHOUT_IMPLEMENTATION); 590 MessageKind.PATCH_EXTERNAL_WITHOUT_IMPLEMENTATION);
579 Expect.stringEquals('External method without an implementation.', 591 Expect.stringEquals('External method without an implementation.',
580 collector.errors.first.message.toString()); 592 collector.errors.first.message.toString());
581 } 593 }
582 594
583 Future testExternalWithoutImplementationMember() async { 595 Future testExternalWithoutImplementationMember() async {
584 var compiler = await applyPatch( 596 var compiler = await applyPatch(
585 """ 597 """
586 class Class { 598 class Class {
587 external void foo(); 599 external void foo();
588 } 600 }
589 """, 601 """,
590 """ 602 """
591 @patch class Class { 603 @patch class Class {
592 // @patch void foo() {} 604 // @patch void foo() {}
593 } 605 }
594 """); 606 """);
595 var container = ensure( 607 var container = ensure(
596 compiler, "Class", compiler.commonElements.coreLibrary.find, 608 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
597 expectIsPatched: true); 609 expectIsPatched: true);
598 container.parseNode(compiler.parsingContext); 610 container.parseNode(compiler.parsingContext);
599 DiagnosticCollector collector = compiler.diagnosticCollector; 611 DiagnosticCollector collector = compiler.diagnosticCollector;
600 collector.clear(); 612 collector.clear();
601 compiler.resolver.resolveMethodElement( 613 compiler.resolver.resolveMethodElement(
602 ensure(compiler, "foo", container.lookupLocalMember)); 614 ensure(compiler, "foo", container.lookupLocalMember));
603 Expect.isTrue( 615 Expect.isTrue(
604 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 616 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
605 print('testExternalWithoutImplementationMember:${collector.errors}'); 617 print('testExternalWithoutImplementationMember:${collector.errors}');
606 Expect.equals(1, collector.errors.length); 618 Expect.equals(1, collector.errors.length);
607 Expect.isTrue(collector.errors.first.message.kind == 619 Expect.isTrue(collector.errors.first.message.kind ==
608 MessageKind.PATCH_EXTERNAL_WITHOUT_IMPLEMENTATION); 620 MessageKind.PATCH_EXTERNAL_WITHOUT_IMPLEMENTATION);
609 Expect.stringEquals('External method without an implementation.', 621 Expect.stringEquals('External method without an implementation.',
610 collector.errors.first.message.toString()); 622 collector.errors.first.message.toString());
611 } 623 }
612 624
613 Future testIsSubclass() async { 625 Future testIsSubclass() async {
614 var compiler = await applyPatch( 626 var compiler = await applyPatch(
615 """ 627 """
616 class A {} 628 class A {}
617 """, 629 """,
618 """ 630 """
619 @patch class A {} 631 @patch class A {}
620 """); 632 """);
621 ClassElement cls = ensure( 633 ClassElement cls = ensure(
622 compiler, "A", compiler.commonElements.coreLibrary.find, 634 compiler, "A", compiler.resolution.commonElements.coreLibrary.find,
623 expectIsPatched: true); 635 expectIsPatched: true);
624 ClassElement patch = cls.patch; 636 ClassElement patch = cls.patch;
625 Expect.isTrue(cls != patch); 637 Expect.isTrue(cls != patch);
626 Expect.isTrue(cls.isSubclassOf(patch)); 638 Expect.isTrue(cls.isSubclassOf(patch));
627 Expect.isTrue(patch.isSubclassOf(cls)); 639 Expect.isTrue(patch.isSubclassOf(cls));
628 } 640 }
629 641
630 Future testPatchNonExistingTopLevel() async { 642 Future testPatchNonExistingTopLevel() async {
631 var compiler = await applyPatch( 643 var compiler = await applyPatch(
632 """ 644 """
(...skipping 15 matching lines...) Expand all
648 var compiler = await applyPatch( 660 var compiler = await applyPatch(
649 """ 661 """
650 class Class {} 662 class Class {}
651 """, 663 """,
652 """ 664 """
653 @patch class Class { 665 @patch class Class {
654 @patch void foo() {} 666 @patch void foo() {}
655 } 667 }
656 """); 668 """);
657 var container = ensure( 669 var container = ensure(
658 compiler, "Class", compiler.commonElements.coreLibrary.find, 670 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
659 expectIsPatched: true); 671 expectIsPatched: true);
660 container.parseNode(compiler.parsingContext); 672 container.parseNode(compiler.parsingContext);
661 DiagnosticCollector collector = compiler.diagnosticCollector; 673 DiagnosticCollector collector = compiler.diagnosticCollector;
662 674
663 Expect.isTrue( 675 Expect.isTrue(
664 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 676 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
665 print('testPatchNonExistingMember:${collector.errors}'); 677 print('testPatchNonExistingMember:${collector.errors}');
666 Expect.equals(1, collector.errors.length); 678 Expect.equals(1, collector.errors.length);
667 Expect.isTrue( 679 Expect.isTrue(
668 collector.errors.first.message.kind == MessageKind.PATCH_NON_EXISTING); 680 collector.errors.first.message.kind == MessageKind.PATCH_NON_EXISTING);
669 } 681 }
670 682
671 Future testPatchNonPatchablePatch() async { 683 Future testPatchNonPatchablePatch() async {
672 var compiler = await applyPatch( 684 var compiler = await applyPatch(
673 """ 685 """
674 external get foo; 686 external get foo;
675 """, 687 """,
676 """ 688 """
677 @patch var foo; 689 @patch var foo;
678 """); 690 """);
679 ensure(compiler, "foo", compiler.commonElements.coreLibrary.find); 691 ensure(compiler, "foo", compiler.resolution.commonElements.coreLibrary.find);
680 692
681 DiagnosticCollector collector = compiler.diagnosticCollector; 693 DiagnosticCollector collector = compiler.diagnosticCollector;
682 Expect.isTrue( 694 Expect.isTrue(
683 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 695 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
684 print('testPatchNonPatchablePatch:${collector.errors}'); 696 print('testPatchNonPatchablePatch:${collector.errors}');
685 Expect.equals(1, collector.errors.length); 697 Expect.equals(1, collector.errors.length);
686 Expect.isTrue( 698 Expect.isTrue(
687 collector.errors.first.message.kind == MessageKind.PATCH_NONPATCHABLE); 699 collector.errors.first.message.kind == MessageKind.PATCH_NONPATCHABLE);
688 } 700 }
689 701
690 Future testPatchNonPatchableOrigin() async { 702 Future testPatchNonPatchableOrigin() async {
691 var compiler = await applyPatch( 703 var compiler = await applyPatch(
692 """ 704 """
693 external var foo; 705 external var foo;
694 """, 706 """,
695 """ 707 """
696 @patch get foo => 0; 708 @patch get foo => 0;
697 """); 709 """);
698 ensure(compiler, "foo", compiler.commonElements.coreLibrary.find); 710 ensure(compiler, "foo", compiler.resolution.commonElements.coreLibrary.find);
699 711
700 DiagnosticCollector collector = compiler.diagnosticCollector; 712 DiagnosticCollector collector = compiler.diagnosticCollector;
701 Expect.isTrue( 713 Expect.isTrue(
702 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}"); 714 collector.warnings.isEmpty, "Unexpected warnings: ${collector.warnings}");
703 print('testPatchNonPatchableOrigin:${collector.errors}'); 715 print('testPatchNonPatchableOrigin:${collector.errors}');
704 Expect.equals(2, collector.errors.length); 716 Expect.equals(2, collector.errors.length);
705 Expect.equals( 717 Expect.equals(
706 MessageKind.EXTRANEOUS_MODIFIER, collector.errors.first.message.kind); 718 MessageKind.EXTRANEOUS_MODIFIER, collector.errors.first.message.kind);
707 Expect.equals( 719 Expect.equals(
708 // TODO(ahe): Eventually, this error should be removed as it will be 720 // TODO(ahe): Eventually, this error should be removed as it will be
(...skipping 28 matching lines...) Expand all
737 class Class { 749 class Class {
738 void foo() {} 750 void foo() {}
739 } 751 }
740 """, 752 """,
741 """ 753 """
742 @patch class Class { 754 @patch class Class {
743 @patch void foo() {} 755 @patch void foo() {}
744 } 756 }
745 """); 757 """);
746 var container = ensure( 758 var container = ensure(
747 compiler, "Class", compiler.commonElements.coreLibrary.find, 759 compiler, "Class", compiler.resolution.commonElements.coreLibrary.find,
748 expectIsPatched: true); 760 expectIsPatched: true);
749 container.parseNode(compiler.parsingContext); 761 container.parseNode(compiler.parsingContext);
750 762
751 DiagnosticCollector collector = compiler.diagnosticCollector; 763 DiagnosticCollector collector = compiler.diagnosticCollector;
752 print('testPatchNonExternalMember.errors:${collector.errors}'); 764 print('testPatchNonExternalMember.errors:${collector.errors}');
753 print('testPatchNonExternalMember.warnings:${collector.warnings}'); 765 print('testPatchNonExternalMember.warnings:${collector.warnings}');
754 Expect.equals(1, collector.errors.length); 766 Expect.equals(1, collector.errors.length);
755 Expect.isTrue( 767 Expect.isTrue(
756 collector.errors.first.message.kind == MessageKind.PATCH_NON_EXTERNAL); 768 collector.errors.first.message.kind == MessageKind.PATCH_NON_EXTERNAL);
757 Expect.equals(0, collector.warnings.length); 769 Expect.equals(0, collector.warnings.length);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 new A(); // ensure A and B are instantiated 912 new A(); // ensure A and B are instantiated
901 new B(); 913 new B();
902 } 914 }
903 """, 915 """,
904 runCompiler: true, 916 runCompiler: true,
905 analyzeOnly: true); 917 analyzeOnly: true);
906 compiler.closeResolution(); 918 compiler.closeResolution();
907 ClosedWorld world = compiler.resolutionWorldBuilder.closedWorldForTesting; 919 ClosedWorld world = compiler.resolutionWorldBuilder.closedWorldForTesting;
908 920
909 ClassElement cls = ensure( 921 ClassElement cls = ensure(
910 compiler, "A", compiler.commonElements.coreLibrary.find, 922 compiler, "A", compiler.resolution.commonElements.coreLibrary.find,
911 expectIsPatched: true); 923 expectIsPatched: true);
912 cls.ensureResolved(compiler.resolution); 924 cls.ensureResolved(compiler.resolution);
913 925
914 ensure(compiler, "method", cls.patch.lookupLocalMember, 926 ensure(compiler, "method", cls.patch.lookupLocalMember,
915 checkHasBody: true, expectIsRegular: true); 927 checkHasBody: true, expectIsRegular: true);
916 928
917 ensure(compiler, "clear", cls.lookupLocalMember, 929 ensure(compiler, "clear", cls.lookupLocalMember,
918 checkHasBody: true, expectIsPatched: true); 930 checkHasBody: true, expectIsPatched: true);
919 931
920 compiler.phase = Compiler.PHASE_DONE_RESOLVING; 932 compiler.phase = Compiler.PHASE_DONE_RESOLVING;
(...skipping 13 matching lines...) Expand all
934 selector = 946 selector =
935 new Selector.call(const PublicName('clear'), CallStructure.NO_ARGS); 947 new Selector.call(const PublicName('clear'), CallStructure.NO_ARGS);
936 typeMask = new TypeMask.exact(cls, world); 948 typeMask = new TypeMask.exact(cls, world);
937 method = cls.lookupLocalMember('clear'); 949 method = cls.lookupLocalMember('clear');
938 method.computeType(compiler.resolution); 950 method.computeType(compiler.resolution);
939 Expect.isTrue(selector.applies(method)); 951 Expect.isTrue(selector.applies(method));
940 Expect.isTrue(typeMask.canHit(method, selector, world)); 952 Expect.isTrue(typeMask.canHit(method, selector, world));
941 953
942 // Check that the declaration method in the declaration class is a target 954 // Check that the declaration method in the declaration class is a target
943 // for a typed selector on a subclass. 955 // for a typed selector on a subclass.
944 cls = ensure(compiler, "B", compiler.commonElements.coreLibrary.find); 956 cls = ensure(
957 compiler, "B", compiler.resolution.commonElements.coreLibrary.find);
945 cls.ensureResolved(compiler.resolution); 958 cls.ensureResolved(compiler.resolution);
946 typeMask = new TypeMask.exact(cls, world); 959 typeMask = new TypeMask.exact(cls, world);
947 Expect.isTrue(selector.applies(method)); 960 Expect.isTrue(selector.applies(method));
948 Expect.isTrue(typeMask.canHit(method, selector, world)); 961 Expect.isTrue(typeMask.canHit(method, selector, world));
949 } 962 }
950 963
951 Future testAnalyzeAllInjectedMembers() async { 964 Future testAnalyzeAllInjectedMembers() async {
952 Future expect(String patchText, [expectedWarnings]) async { 965 Future expect(String patchText, [expectedWarnings]) async {
953 if (expectedWarnings == null) expectedWarnings = []; 966 if (expectedWarnings == null) expectedWarnings = [];
954 if (expectedWarnings is! List) { 967 if (expectedWarnings is! List) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 @patch 1025 @patch
1013 factory B.patchInjected() = _C.injected; 1026 factory B.patchInjected() = _C.injected;
1014 } 1027 }
1015 class _C extends B { 1028 class _C extends B {
1016 _C.injected() : super.patchTarget(); 1029 _C.injected() : super.patchTarget();
1017 } 1030 }
1018 """; 1031 """;
1019 1032
1020 var compiler = await applyPatch(origin, patch, 1033 var compiler = await applyPatch(origin, patch,
1021 analyzeAll: true, analyzeOnly: true, runCompiler: true); 1034 analyzeAll: true, analyzeOnly: true, runCompiler: true);
1022 ClassElement clsA = compiler.commonElements.coreLibrary.find("A"); 1035 ClassElement clsA = compiler.resolution.commonElements.coreLibrary.find("A");
1023 ClassElement clsB = compiler.commonElements.coreLibrary.find("B"); 1036 ClassElement clsB = compiler.resolution.commonElements.coreLibrary.find("B");
1024 1037
1025 ConstructorElement forward = clsA.lookupConstructor("forward"); 1038 ConstructorElement forward = clsA.lookupConstructor("forward");
1026 ConstructorElement target = forward.effectiveTarget; 1039 ConstructorElement target = forward.effectiveTarget;
1027 Expect.isTrue(target.isPatched, "Unexpected target $target for $forward"); 1040 Expect.isTrue(target.isPatched, "Unexpected target $target for $forward");
1028 Expect.isFalse(target.isPatch, "Unexpected target $target for $forward"); 1041 Expect.isFalse(target.isPatch, "Unexpected target $target for $forward");
1029 Expect.equals("patchTarget", target.name); 1042 Expect.equals("patchTarget", target.name);
1030 1043
1031 ConstructorElement forwardOne = clsA.lookupConstructor("forwardOne"); 1044 ConstructorElement forwardOne = clsA.lookupConstructor("forwardOne");
1032 target = forwardOne.effectiveTarget; 1045 target = forwardOne.effectiveTarget;
1033 Expect.isFalse(forwardOne.isMalformed); 1046 Expect.isFalse(forwardOne.isMalformed);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 await testPatchNonFunction(); 1114 await testPatchNonFunction();
1102 1115
1103 await testPatchAndSelector(); 1116 await testPatchAndSelector();
1104 1117
1105 await testEffectiveTarget(); 1118 await testEffectiveTarget();
1106 1119
1107 await testAnalyzeAllInjectedMembers(); 1120 await testAnalyzeAllInjectedMembers();
1108 await testTypecheckPatchedMembers(); 1121 await testTypecheckPatchedMembers();
1109 }); 1122 });
1110 } 1123 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/no_such_method_enabled_test.dart ('k') | tests/compiler/dart2js/related_types.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698