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

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

Issue 1809533004: Support serialization of WorldImpact (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Rebased Created 4 years, 9 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 | « tests/compiler/dart2js/serialization_analysis_test.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) 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 library dart2js.serialization_test; 5 library dart2js.serialization_test;
6 6
7 import 'dart:io'; 7 import 'dart:io';
8 import 'memory_compiler.dart'; 8 import 'memory_compiler.dart';
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:compiler/src/constants/constructors.dart'; 10 import 'package:compiler/src/constants/constructors.dart';
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 throw "$object1.$property = '${value1}' <> " 335 throw "$object1.$property = '${value1}' <> "
336 "$object2.$property = '${value2}'"; 336 "$object2.$property = '${value2}'";
337 } 337 }
338 } 338 }
339 339
340 /// Visitor that checks for equivalence of [Element] identities. 340 /// Visitor that checks for equivalence of [Element] identities.
341 class ElementIdentityEquivalence extends BaseElementVisitor<dynamic, Element> { 341 class ElementIdentityEquivalence extends BaseElementVisitor<dynamic, Element> {
342 const ElementIdentityEquivalence(); 342 const ElementIdentityEquivalence();
343 343
344 void visit(Element element1, Element element2) { 344 void visit(Element element1, Element element2) {
345 if (element1 == null && element2 == null) return;
346 if (element1 == element2) return;
347 element1 = element1.declaration;
348 element2 = element2.declaration;
345 check(element1, element2, 'kind', element1.kind, element2.kind); 349 check(element1, element2, 'kind', element1.kind, element2.kind);
346 element1.accept(this, element2); 350 element1.accept(this, element2);
347 } 351 }
348 352
349 @override 353 @override
350 void visitElement(Element e, Element arg) { 354 void visitElement(Element e, Element arg) {
351 throw new UnsupportedError("Unsupported element $e"); 355 throw new UnsupportedError("Unsupported element $e");
352 } 356 }
353 357
354 @override 358 @override
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 element1.name, element2.name); 451 element1.name, element2.name);
448 visit(element1.library, element2.library); 452 visit(element1.library, element2.library);
449 } 453 }
450 } 454 }
451 455
452 /// Visitor that checks for equivalence of [Element] properties. 456 /// Visitor that checks for equivalence of [Element] properties.
453 class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> { 457 class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> {
454 const ElementPropertyEquivalence(); 458 const ElementPropertyEquivalence();
455 459
456 void visit(Element element1, Element element2) { 460 void visit(Element element1, Element element2) {
461 if (element1 == null && element2 == null) return;
457 if (element1 == element2) return; 462 if (element1 == element2) return;
463 element1 = element1.declaration;
464 element2 = element2.declaration;
458 check(element1, element2, 'kind', element1.kind, element2.kind); 465 check(element1, element2, 'kind', element1.kind, element2.kind);
459 element1.accept(this, element2); 466 element1.accept(this, element2);
460 } 467 }
461 468
462 @override 469 @override
463 void visitElement(Element e, Element arg) { 470 void visitElement(Element e, Element arg) {
464 throw new UnsupportedError("Unsupported element $e"); 471 throw new UnsupportedError("Unsupported element $e");
465 } 472 }
466 473
467 @override 474 @override
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 element2.forEachLocalMember((Element member) { 523 element2.forEachLocalMember((Element member) {
517 members2.add(member); 524 members2.add(member);
518 }); 525 });
519 checkElementListIdentities( 526 checkElementListIdentities(
520 element1, element2, 'localMembers', members1, members2); 527 element1, element2, 'localMembers', members1, members2);
521 } 528 }
522 529
523 void visitMembers(ScopeContainerElement element1, 530 void visitMembers(ScopeContainerElement element1,
524 ScopeContainerElement element2) { 531 ScopeContainerElement element2) {
525 Set<String> names = new Set<String>(); 532 Set<String> names = new Set<String>();
526 element1.forEachLocalMember((Element member) { 533 Iterable<Element> members1 = element1.isLibrary
534 ? LibrarySerializer.getMembers(element1)
535 : ClassSerializer.getMembers(element1);
536 Iterable<Element> members2 = element2.isLibrary
537 ? LibrarySerializer.getMembers(element2)
538 : ClassSerializer.getMembers(element2);
539 for (Element member in members1) {
527 names.add(member.name); 540 names.add(member.name);
528 }); 541 }
529 element2.forEachLocalMember((Element member) { 542 for (Element member in members2) {
530 names.add(member.name); 543 names.add(member.name);
531 }); 544 }
545 element1 = element1.implementation;
546 element2 = element2.implementation;
532 for (String name in names) { 547 for (String name in names) {
533 Element member1 = element1.localLookup(name); 548 Element member1 = element1.localLookup(name);
534 Element member2 = element2.localLookup(name); 549 Element member2 = element2.localLookup(name);
535 if (member1 == null) { 550 if (member1 == null) {
536 print('Missing member for $member2'); 551 print('Missing member for $member2 in\n ${members1.join('\n ')}');
537 continue; 552 continue;
538 } 553 }
539 if (member2 == null) { 554 if (member2 == null) {
540 print('Missing member for $member1'); 555 print('Missing member for $member1 in\n ${members2.join('\n ')}');
541 continue; 556 continue;
542 } 557 }
543 visit(member1, member2); 558 visit(member1, member2);
544 } 559 }
545 } 560 }
546 561
547 @override 562 @override
548 void visitClassElement(ClassElement element1, ClassElement element2) { 563 void visitClassElement(ClassElement element1, ClassElement element2) {
549 checkElementIdentities(null, null, null, element1, element2); 564 checkElementIdentities(null, null, null, element1, element2);
550 check(element1, element2, 'name', 565 check(element1, element2, 'name',
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 exp1, exp2, 'expression', 1100 exp1, exp2, 'expression',
1086 exp1.expression, exp2.expression); 1101 exp1.expression, exp2.expression);
1087 } 1102 }
1088 1103
1089 @override 1104 @override
1090 visitDeferred(DeferredConstantExpression exp1, 1105 visitDeferred(DeferredConstantExpression exp1,
1091 DeferredConstantExpression exp2) { 1106 DeferredConstantExpression exp2) {
1092 // TODO: implement visitDeferred 1107 // TODO: implement visitDeferred
1093 } 1108 }
1094 } 1109 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/serialization_analysis_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698