| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 // Test for iterators on for [SubclassNode]. | 5 // Test for iterators on for [SubclassNode]. |
| 6 | 6 |
| 7 library class_set_test; | 7 library class_set_test; |
| 8 | 8 |
| 9 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
| 10 import 'package:async_helper/async_helper.dart'; | 10 import 'package:async_helper/async_helper.dart'; |
| 11 import 'type_test_helper.dart'; | 11 import 'type_test_helper.dart'; |
| 12 import 'package:compiler/src/elements/elements.dart' show ClassElement; | 12 import 'package:compiler/src/elements/elements.dart' show ClassElement; |
| 13 import 'package:compiler/src/universe/class_set.dart'; | 13 import 'package:compiler/src/universe/class_set.dart'; |
| 14 import 'package:compiler/src/util/enumset.dart'; | 14 import 'package:compiler/src/util/enumset.dart'; |
| 15 import 'package:compiler/src/util/util.dart'; | 15 import 'package:compiler/src/util/util.dart'; |
| 16 import 'package:compiler/src/world.dart'; | 16 import 'package:compiler/src/world.dart'; |
| 17 | 17 |
| 18 void main() { | 18 void main() { |
| 19 asyncTest(() async { | 19 asyncTest(() async { |
| 20 await testIterators(); | 20 await testIterators(); |
| 21 await testForEach(); | 21 await testForEach(); |
| 22 }); | 22 }); |
| 23 } | 23 } |
| 24 | 24 |
| 25 testIterators() async { | 25 testIterators() async { |
| 26 var env = await TypeEnvironment.create( | 26 var env = await TypeEnvironment.create(r""" |
| 27 r""" | |
| 28 /// A | 27 /// A |
| 29 /// / \ | 28 /// / \ |
| 30 /// B C | 29 /// B C |
| 31 /// / /|\ | 30 /// / /|\ |
| 32 /// D E F G | 31 /// D E F G |
| 33 /// | 32 /// |
| 34 class A {} | 33 class A {} |
| 35 class B extends A {} | 34 class B extends A {} |
| 36 class C extends A {} | 35 class C extends A {} |
| 37 class D extends B {} | 36 class D extends B {} |
| 38 class E extends C {} | 37 class E extends C {} |
| 39 class F extends C {} | 38 class F extends C {} |
| 40 class G extends C {} | 39 class G extends C {} |
| 41 """, | 40 """, mainSource: r""" |
| 42 mainSource: r""" | |
| 43 main() { | 41 main() { |
| 44 new A(); | 42 new A(); |
| 45 new C(); | 43 new C(); |
| 46 new D(); | 44 new D(); |
| 47 new E(); | 45 new E(); |
| 48 new F(); | 46 new F(); |
| 49 new G(); | 47 new G(); |
| 50 } | 48 } |
| 51 """, | 49 """, useMockCompiler: false); |
| 52 useMockCompiler: false); | |
| 53 ClosedWorld world = env.closedWorld; | 50 ClosedWorld world = env.closedWorld; |
| 54 | 51 |
| 55 ClassElement A = env.getElement("A"); | 52 ClassElement A = env.getElement("A"); |
| 56 ClassElement B = env.getElement("B"); | 53 ClassElement B = env.getElement("B"); |
| 57 ClassElement C = env.getElement("C"); | 54 ClassElement C = env.getElement("C"); |
| 58 ClassElement D = env.getElement("D"); | 55 ClassElement D = env.getElement("D"); |
| 59 ClassElement E = env.getElement("E"); | 56 ClassElement E = env.getElement("E"); |
| 60 ClassElement F = env.getElement("F"); | 57 ClassElement F = env.getElement("F"); |
| 61 ClassElement G = env.getElement("G"); | 58 ClassElement G = env.getElement("G"); |
| 62 | 59 |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 Expect.equals(G, iterator.current); | 339 Expect.equals(G, iterator.current); |
| 343 Expect.isTrue(iterator.moveNext()); | 340 Expect.isTrue(iterator.moveNext()); |
| 344 checkState(A, currentNode: D, stack: []); | 341 checkState(A, currentNode: D, stack: []); |
| 345 Expect.equals(D, iterator.current); | 342 Expect.equals(D, iterator.current); |
| 346 Expect.isFalse(iterator.moveNext()); | 343 Expect.isFalse(iterator.moveNext()); |
| 347 checkState(A, currentNode: null, stack: []); | 344 checkState(A, currentNode: null, stack: []); |
| 348 Expect.isNull(iterator.current); | 345 Expect.isNull(iterator.current); |
| 349 } | 346 } |
| 350 | 347 |
| 351 testForEach() async { | 348 testForEach() async { |
| 352 var env = await TypeEnvironment.create( | 349 var env = await TypeEnvironment.create(r""" |
| 353 r""" | |
| 354 /// A | 350 /// A |
| 355 /// / \ | 351 /// / \ |
| 356 /// B C | 352 /// B C |
| 357 /// / /|\ | 353 /// / /|\ |
| 358 /// D E F G | 354 /// D E F G |
| 359 /// / \ | 355 /// / \ |
| 360 /// H I | 356 /// H I |
| 361 /// | 357 /// |
| 362 class A implements X {} | 358 class A implements X {} |
| 363 class B extends A {} | 359 class B extends A {} |
| 364 class C extends A {} | 360 class C extends A {} |
| 365 class D extends B {} | 361 class D extends B {} |
| 366 class E extends C {} | 362 class E extends C {} |
| 367 class F extends C implements B {} | 363 class F extends C implements B {} |
| 368 class G extends C implements D {} | 364 class G extends C implements D {} |
| 369 class H extends F {} | 365 class H extends F {} |
| 370 class I extends F {} | 366 class I extends F {} |
| 371 class X {} | 367 class X {} |
| 372 """, | 368 """, mainSource: r""" |
| 373 mainSource: r""" | |
| 374 main() { | 369 main() { |
| 375 new A(); | 370 new A(); |
| 376 new C(); | 371 new C(); |
| 377 new D(); | 372 new D(); |
| 378 new E(); | 373 new E(); |
| 379 new F(); | 374 new F(); |
| 380 new G(); | 375 new G(); |
| 381 new H(); | 376 new H(); |
| 382 new I(); | 377 new I(); |
| 383 } | 378 } |
| 384 """, | 379 """, useMockCompiler: false); |
| 385 useMockCompiler: false); | |
| 386 ClosedWorld world = env.closedWorld; | 380 ClosedWorld world = env.closedWorld; |
| 387 | 381 |
| 388 ClassElement A = env.getElement("A"); | 382 ClassElement A = env.getElement("A"); |
| 389 ClassElement B = env.getElement("B"); | 383 ClassElement B = env.getElement("B"); |
| 390 ClassElement C = env.getElement("C"); | 384 ClassElement C = env.getElement("C"); |
| 391 ClassElement D = env.getElement("D"); | 385 ClassElement D = env.getElement("D"); |
| 392 ClassElement E = env.getElement("E"); | 386 ClassElement E = env.getElement("E"); |
| 393 ClassElement F = env.getElement("F"); | 387 ClassElement F = env.getElement("F"); |
| 394 ClassElement G = env.getElement("G"); | 388 ClassElement G = env.getElement("G"); |
| 395 ClassElement H = env.getElement("H"); | 389 ClassElement H = env.getElement("H"); |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 checkAny(B, [B, D], find: D, anySubtype: true, expectedResult: true); | 571 checkAny(B, [B, D], find: D, anySubtype: true, expectedResult: true); |
| 578 checkAny(B, [B, D, F, I], find: I, anySubtype: true, expectedResult: true); | 572 checkAny(B, [B, D, F, I], find: I, anySubtype: true, expectedResult: true); |
| 579 | 573 |
| 580 checkAny(X, [X, A, B, D, C, G, F, I, H, E], | 574 checkAny(X, [X, A, B, D, C, G, F, I, H, E], |
| 581 anySubtype: true, expectedResult: false); | 575 anySubtype: true, expectedResult: false); |
| 582 checkAny(X, [X, A], find: A, anySubtype: true, expectedResult: true); | 576 checkAny(X, [X, A], find: A, anySubtype: true, expectedResult: true); |
| 583 checkAny(X, [X, A, B, D], find: D, anySubtype: true, expectedResult: true); | 577 checkAny(X, [X, A, B, D], find: D, anySubtype: true, expectedResult: true); |
| 584 checkAny(X, [X, A, B, D, C, G, F, I], | 578 checkAny(X, [X, A, B, D, C, G, F, I], |
| 585 find: I, anySubtype: true, expectedResult: true); | 579 find: I, anySubtype: true, expectedResult: true); |
| 586 } | 580 } |
| OLD | NEW |