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

Side by Side Diff: tests/compiler/dart2js/equivalence/check_functions.dart

Issue 2882523003: Add forEachLibraryMember and forEachConstructor to ElementEnvironment (Closed)
Patch Set: Updated cf. comments. Created 3 years, 7 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
« no previous file with comments | « pkg/compiler/lib/src/resolution/resolution_strategy.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 /// Equivalence test functions for data objects. 5 /// Equivalence test functions for data objects.
6 6
7 library dart2js.equivalence.functions; 7 library dart2js.equivalence.functions;
8 8
9 import 'package:expect/expect.dart'; 9 import 'package:expect/expect.dart';
10 import 'package:compiler/src/common/resolution.dart'; 10 import 'package:compiler/src/common/resolution.dart';
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 check(usage1, usage2, 'isIsolateInUse', usage1.isIsolateInUse, 422 check(usage1, usage2, 'isIsolateInUse', usage1.isIsolateInUse,
423 usage2.isIsolateInUse); 423 usage2.isIsolateInUse);
424 check(usage1, usage2, 'isFunctionApplyUsed', usage1.isFunctionApplyUsed, 424 check(usage1, usage2, 'isFunctionApplyUsed', usage1.isFunctionApplyUsed,
425 usage2.isFunctionApplyUsed); 425 usage2.isFunctionApplyUsed);
426 check(usage1, usage2, 'isNoSuchMethodUsed', usage1.isNoSuchMethodUsed, 426 check(usage1, usage2, 'isNoSuchMethodUsed', usage1.isNoSuchMethodUsed,
427 usage2.isNoSuchMethodUsed); 427 usage2.isNoSuchMethodUsed);
428 } 428 }
429 429
430 checkElementEnvironment( 430 checkElementEnvironment(
431 ElementEnvironment env1, ElementEnvironment env2, TestStrategy strategy) { 431 ElementEnvironment env1, ElementEnvironment env2, TestStrategy strategy) {
432 strategy.testElements(
433 env1, env2, 'mainLibrary', env1.mainLibrary, env2.mainLibrary);
434 strategy.testElements(
435 env1, env2, 'mainFunction', env1.mainFunction, env2.mainFunction);
436
432 checkMembers(MemberEntity member1, MemberEntity member2) { 437 checkMembers(MemberEntity member1, MemberEntity member2) {
433 Expect.equals(env1.isDeferredLoadLibraryGetter(member1), 438 Expect.equals(env1.isDeferredLoadLibraryGetter(member1),
434 env2.isDeferredLoadLibraryGetter(member2)); 439 env2.isDeferredLoadLibraryGetter(member2));
435 440
436 checkListEquivalence( 441 checkListEquivalence(
437 member1, 442 member1,
438 member2, 443 member2,
439 'metadata', 444 'metadata',
440 env1.getMemberMetadata(member1), 445 env1.getMemberMetadata(member1),
441 env2.getMemberMetadata(member2), 446 env2.getMemberMetadata(member2),
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 setter: member2.isSetter)); 517 setter: member2.isSetter));
513 } 518 }
514 members2[member2] = declarer2; 519 members2[member2] = declarer2;
515 }); 520 });
516 checkMapEquivalence(cls1, cls2, 'members', members1, members2, (a, b) { 521 checkMapEquivalence(cls1, cls2, 'members', members1, members2, (a, b) {
517 bool result = strategy.elementEquivalence(a, b); 522 bool result = strategy.elementEquivalence(a, b);
518 if (result) checkMembers(a, b); 523 if (result) checkMembers(a, b);
519 return result; 524 return result;
520 }, strategy.elementEquivalence); 525 }, strategy.elementEquivalence);
521 526
527 Set<ConstructorEntity> constructors2 = new Set<ConstructorEntity>();
528 env1.forEachConstructor(cls1, (ConstructorEntity constructor1) {
529 Expect.identical(
530 constructor1, env1.lookupConstructor(cls1, constructor1.name));
531
532 String constructorName = constructor1.name;
533 ConstructorEntity constructor2 =
534 env2.lookupConstructor(cls2, constructorName);
535 Expect.isNotNull(
536 constructor2, "Missing constructor for $constructor1 in $cls2 ");
537 Expect.identical(
538 constructor2, env2.lookupConstructor(cls2, constructor2.name));
539
540 constructors2.add(constructor2);
541
542 check(cls1, cls2, 'constructor:${constructorName}', constructor1,
543 constructor2, strategy.elementEquivalence);
544
545 checkMembers(constructor1, constructor2);
546 });
547 env2.forEachConstructor(cls2, (ConstructorEntity constructor2) {
548 Expect.isTrue(constructors2.contains(constructor2),
549 "Extra constructor $constructor2 in $cls2");
550 });
551
522 classes2.add(cls2); 552 classes2.add(cls2);
523 }); 553 });
524 env2.forEachClass(lib2, (ClassEntity cls2) { 554 env2.forEachClass(lib2, (ClassEntity cls2) {
525 Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2"); 555 Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2");
526 }); 556 });
557
558 Set<MemberEntity> members2 = new Set<MemberEntity>();
559 env1.forEachLibraryMember(lib1, (MemberEntity member1) {
560 Expect.identical(
561 member1,
562 env1.lookupLibraryMember(lib1, member1.name,
563 setter: member1.isSetter));
564
565 String memberName = member1.name;
566 MemberEntity member2 =
567 env2.lookupLibraryMember(lib2, memberName, setter: member1.isSetter);
568 Expect.isNotNull(member2, 'Missing member for $member1 in $lib2');
569 Expect.identical(
570 member2,
571 env2.lookupLibraryMember(lib2, member2.name,
572 setter: member2.isSetter));
573
574 members2.add(member2);
575
576 check(lib1, lib2, 'member:${memberName}', member1, member2,
577 strategy.elementEquivalence);
578
579 checkMembers(member1, member2);
580 });
581 env2.forEachLibraryMember(lib2, (MemberEntity member2) {
582 Expect.isTrue(
583 members2.contains(member2), "Extra member $member2 in $lib2");
584 });
527 }); 585 });
528 // TODO(johnniwinther): Test the remaining properties of [ElementEnvironment]. 586 // TODO(johnniwinther): Test the remaining properties of [ElementEnvironment].
529 } 587 }
530 588
531 bool areInstantiationInfosEquivalent( 589 bool areInstantiationInfosEquivalent(
532 InstantiationInfo info1, 590 InstantiationInfo info1,
533 InstantiationInfo info2, 591 InstantiationInfo info2,
534 bool elementEquivalence(Entity a, Entity b), 592 bool elementEquivalence(Entity a, Entity b),
535 bool typeEquivalence(DartType a, DartType b)) { 593 bool typeEquivalence(DartType a, DartType b)) {
536 checkMaps( 594 checkMaps(
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 backendUsage1.isFunctionApplyUsed, 661 backendUsage1.isFunctionApplyUsed,
604 backendUsage1.isFunctionApplyUsed, 662 backendUsage1.isFunctionApplyUsed,
605 "JavaScriptBackend.hasFunctionApplySupport mismatch"); 663 "JavaScriptBackend.hasFunctionApplySupport mismatch");
606 Expect.equals( 664 Expect.equals(
607 backendUsage1.isRuntimeTypeUsed, 665 backendUsage1.isRuntimeTypeUsed,
608 backendUsage2.isRuntimeTypeUsed, 666 backendUsage2.isRuntimeTypeUsed,
609 "JavaScriptBackend.hasRuntimeTypeSupport mismatch"); 667 "JavaScriptBackend.hasRuntimeTypeSupport mismatch");
610 Expect.equals(backendUsage1.isIsolateInUse, backendUsage2.isIsolateInUse, 668 Expect.equals(backendUsage1.isIsolateInUse, backendUsage2.isIsolateInUse,
611 "JavaScriptBackend.hasIsolateSupport mismatch"); 669 "JavaScriptBackend.hasIsolateSupport mismatch");
612 } 670 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/resolution_strategy.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698