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

Side by Side Diff: tests/compiler/dart2js/serialization/equivalence_test.dart

Issue 2060183002: Serialize metadata (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comment. Created 4 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) 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/commandline_options.dart'; 10 import 'package:compiler/src/commandline_options.dart';
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 241
242 /// Check the equivalence of the two lists of elements, [list1] and [list2]. 242 /// Check the equivalence of the two lists of elements, [list1] and [list2].
243 /// 243 ///
244 /// Uses [object1], [object2] and [property] to provide context for failures. 244 /// Uses [object1], [object2] and [property] to provide context for failures.
245 checkElementLists(Object object1, Object object2, String property, 245 checkElementLists(Object object1, Object object2, String property,
246 Iterable<Element> list1, Iterable<Element> list2) { 246 Iterable<Element> list1, Iterable<Element> list2) {
247 checkListEquivalence(object1, object2, property, 247 checkListEquivalence(object1, object2, property,
248 list1, list2, checkElementProperties); 248 list1, list2, checkElementProperties);
249 } 249 }
250 250
251 /// Check the equivalence of the two metadata annotations, [metadata1] and
252 /// [metadata2].
253 ///
254 /// Uses [object1], [object2] and [property] to provide context for failures.
255 checkMetadata(Object object1, Object object2, String property,
256 MetadataAnnotation metadata1, MetadataAnnotation metadata2) {
257 check(object1, object2, property,
258 metadata1, metadata2, areMetadataAnnotationsEquivalent);
259 }
260
251 /// Visitor that checks for equivalence of [Element] properties. 261 /// Visitor that checks for equivalence of [Element] properties.
252 class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> { 262 class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> {
253 const ElementPropertyEquivalence(); 263 const ElementPropertyEquivalence();
254 264
255 void visit(Element element1, Element element2) { 265 void visit(Element element1, Element element2) {
256 if (element1 == null && element2 == null) return; 266 if (element1 == null && element2 == null) return;
257 element1 = element1.declaration; 267 element1 = element1.declaration;
258 element2 = element2.declaration; 268 element2 = element2.declaration;
259 if (element1 == element2) return; 269 if (element1 == element2) return;
260 check(element1, element2, 'kind', element1.kind, element2.kind); 270 check(element1, element2, 'kind', element1.kind, element2.kind);
261 element1.accept(this, element2); 271 element1.accept(this, element2);
262 check(element1, element2, 'isSynthesized', 272 check(element1, element2, 'isSynthesized',
263 element1.isSynthesized, element2.isSynthesized); 273 element1.isSynthesized, element2.isSynthesized);
264 check(element1, element2, 'isLocal', 274 check(element1, element2, 'isLocal',
265 element1.isLocal, element2.isLocal); 275 element1.isLocal, element2.isLocal);
266 check(element1, element2, 'isFinal', 276 check(element1, element2, 'isFinal',
267 element1.isFinal, element2.isFinal); 277 element1.isFinal, element2.isFinal);
268 check(element1, element2, 'isConst', 278 check(element1, element2, 'isConst',
269 element1.isConst, element2.isConst); 279 element1.isConst, element2.isConst);
270 check(element1, element2, 'isAbstract', 280 check(element1, element2, 'isAbstract',
271 element1.isAbstract, element2.isAbstract); 281 element1.isAbstract, element2.isAbstract);
272 check(element1, element2, 'isStatic', 282 check(element1, element2, 'isStatic',
273 element1.isStatic, element2.isStatic); 283 element1.isStatic, element2.isStatic);
274 check(element1, element2, 'isTopLevel', 284 check(element1, element2, 'isTopLevel',
275 element1.isTopLevel, element2.isTopLevel); 285 element1.isTopLevel, element2.isTopLevel);
276 check(element1, element2, 'isClassMember', 286 check(element1, element2, 'isClassMember',
277 element1.isClassMember, element2.isClassMember); 287 element1.isClassMember, element2.isClassMember);
278 check(element1, element2, 'isInstanceMember', 288 check(element1, element2, 'isInstanceMember',
279 element1.isInstanceMember, element2.isInstanceMember); 289 element1.isInstanceMember, element2.isInstanceMember);
290 checkListEquivalence(element1, element2, 'metadata',
291 element1.metadata, element2.metadata, checkMetadata);
280 } 292 }
281 293
282 @override 294 @override
283 void visitElement(Element e, Element arg) { 295 void visitElement(Element e, Element arg) {
284 throw new UnsupportedError("Unsupported element $e"); 296 throw new UnsupportedError("Unsupported element $e");
285 } 297 }
286 298
287 @override 299 @override
288 void visitLibraryElement(LibraryElement element1, LibraryElement element2) { 300 void visitLibraryElement(LibraryElement element1, LibraryElement element2) {
289 checkElementIdentities(null, null, null, element1, element2); 301 checkElementIdentities(null, null, null, element1, element2);
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 element1, element2, 'rawType', 435 element1, element2, 'rawType',
424 element1.rawType, element2.rawType); 436 element1.rawType, element2.rawType);
425 check(element1, element2, 'isObject', 437 check(element1, element2, 'isObject',
426 element1.isObject, element2.isObject); 438 element1.isObject, element2.isObject);
427 checkTypeLists(element1, element2, 'typeVariables', 439 checkTypeLists(element1, element2, 'typeVariables',
428 element1.typeVariables, element2.typeVariables); 440 element1.typeVariables, element2.typeVariables);
429 check(element1, element2, 'isAbstract', 441 check(element1, element2, 'isAbstract',
430 element1.isAbstract, element2.isAbstract); 442 element1.isAbstract, element2.isAbstract);
431 check(element1, element2, 'isUnnamedMixinApplication', 443 check(element1, element2, 'isUnnamedMixinApplication',
432 element1.isUnnamedMixinApplication, element2.isUnnamedMixinApplication); 444 element1.isUnnamedMixinApplication, element2.isUnnamedMixinApplication);
445 check(element1, element2, 'isProxy',
446 element1.isProxy, element2.isProxy);
447 check(element1, element2, 'isInjected',
448 element1.isInjected, element2.isInjected);
433 check(element1, element2, 'isEnumClass', 449 check(element1, element2, 'isEnumClass',
434 element1.isEnumClass, element2.isEnumClass); 450 element1.isEnumClass, element2.isEnumClass);
435 if (element1.isEnumClass) { 451 if (element1.isEnumClass) {
436 EnumClassElement enum1 = element1; 452 EnumClassElement enum1 = element1;
437 EnumClassElement enum2 = element2; 453 EnumClassElement enum2 = element2;
438 checkElementLists(enum1, enum2, 'enumValues', 454 checkElementLists(enum1, enum2, 'enumValues',
439 enum1.enumValues, enum2.enumValues); 455 enum1.enumValues, enum2.enumValues);
440 } 456 }
441 if (!element1.isObject) { 457 if (!element1.isObject) {
442 checkTypes(element1, element2, 'supertype', 458 checkTypes(element1, element2, 'supertype',
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 element1.type, element2.type); 524 element1.type, element2.type);
509 checkConstants( 525 checkConstants(
510 element1, element2, 'constant', 526 element1, element2, 'constant',
511 element1.constant, element2.constant); 527 element1.constant, element2.constant);
512 check(element1, element2, 'isTopLevel', 528 check(element1, element2, 'isTopLevel',
513 element1.isTopLevel, element2.isTopLevel); 529 element1.isTopLevel, element2.isTopLevel);
514 check(element1, element2, 'isStatic', 530 check(element1, element2, 'isStatic',
515 element1.isStatic, element2.isStatic); 531 element1.isStatic, element2.isStatic);
516 check(element1, element2, 'isInstanceMember', 532 check(element1, element2, 'isInstanceMember',
517 element1.isInstanceMember, element2.isInstanceMember); 533 element1.isInstanceMember, element2.isInstanceMember);
534 check(element1, element2, 'isInjected',
535 element1.isInjected, element2.isInjected);
518 536
519 checkElementIdentities( 537 checkElementIdentities(
520 element1, element2, 'library', 538 element1, element2, 'library',
521 element1.library, element2.library); 539 element1.library, element2.library);
522 checkElementIdentities( 540 checkElementIdentities(
523 element1, element2, 'compilationUnit', 541 element1, element2, 'compilationUnit',
524 element1.compilationUnit, element2.compilationUnit); 542 element1.compilationUnit, element2.compilationUnit);
525 checkElementIdentities( 543 checkElementIdentities(
526 element1, element2, 'enclosingClass', 544 element1, element2, 'enclosingClass',
527 element1.enclosingClass, element2.enclosingClass); 545 element1.enclosingClass, element2.enclosingClass);
(...skipping 13 matching lines...) Expand all
541 checkListEquivalence( 559 checkListEquivalence(
542 element1, element2, 'parameters', 560 element1, element2, 'parameters',
543 element1.parameters, element2.parameters, 561 element1.parameters, element2.parameters,
544 checkElementProperties); 562 checkElementProperties);
545 check(element1, element2, 'isOperator', 563 check(element1, element2, 'isOperator',
546 element1.isOperator, element2.isOperator); 564 element1.isOperator, element2.isOperator);
547 check( 565 check(
548 element1, element2, 'asyncMarker', 566 element1, element2, 'asyncMarker',
549 element1.asyncMarker, 567 element1.asyncMarker,
550 element2.asyncMarker); 568 element2.asyncMarker);
569 check(element1, element2, 'isInjected',
570 element1.isInjected, element2.isInjected);
551 571
552 checkElementIdentities( 572 checkElementIdentities(
553 element1, element2, 'library', 573 element1, element2, 'library',
554 element1.library, element2.library); 574 element1.library, element2.library);
555 checkElementIdentities( 575 checkElementIdentities(
556 element1, element2, 'compilationUnit', 576 element1, element2, 'compilationUnit',
557 element1.compilationUnit, element2.compilationUnit); 577 element1.compilationUnit, element2.compilationUnit);
558 checkElementIdentities( 578 checkElementIdentities(
559 element1, element2, 'enclosingClass', 579 element1, element2, 'enclosingClass',
560 element1.enclosingClass, element2.enclosingClass); 580 element1.enclosingClass, element2.enclosingClass);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 check( 665 check(
646 element1, element2, 'effectiveTargetType.raw', 666 element1, element2, 'effectiveTargetType.raw',
647 element1.computeEffectiveTargetType(element1.enclosingClass.rawType), 667 element1.computeEffectiveTargetType(element1.enclosingClass.rawType),
648 element2.computeEffectiveTargetType(element2.enclosingClass.rawType), 668 element2.computeEffectiveTargetType(element2.enclosingClass.rawType),
649 areTypesEquivalent); 669 areTypesEquivalent);
650 checkElementIdentities(element1, element2, 'immediateRedirectionTarget', 670 checkElementIdentities(element1, element2, 'immediateRedirectionTarget',
651 element1.immediateRedirectionTarget, 671 element1.immediateRedirectionTarget,
652 element2.immediateRedirectionTarget); 672 element2.immediateRedirectionTarget);
653 checkElementIdentities(element1, element2, 'redirectionDeferredPrefix', 673 checkElementIdentities(element1, element2, 'redirectionDeferredPrefix',
654 element1.redirectionDeferredPrefix, element2.redirectionDeferredPrefix); 674 element1.redirectionDeferredPrefix, element2.redirectionDeferredPrefix);
675 check(element1, element2, 'isInjected',
676 element1.isInjected, element2.isInjected);
655 } 677 }
656 678
657 @override 679 @override
658 void visitAbstractFieldElement(AbstractFieldElement element1, 680 void visitAbstractFieldElement(AbstractFieldElement element1,
659 AbstractFieldElement element2) { 681 AbstractFieldElement element2) {
660 visit(element1.getter, element2.getter); 682 visit(element1.getter, element2.getter);
661 visit(element1.setter, element2.setter); 683 visit(element1.setter, element2.setter);
662 } 684 }
663 685
664 @override 686 @override
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 void visitPrefixElement(PrefixElement element1, PrefixElement element2) { 786 void visitPrefixElement(PrefixElement element1, PrefixElement element2) {
765 check( 787 check(
766 element1, element2, 'isDeferred', 788 element1, element2, 'isDeferred',
767 element1.isDeferred, element2.isDeferred); 789 element1.isDeferred, element2.isDeferred);
768 checkElementIdentities( 790 checkElementIdentities(
769 element1, element2, 'importedLibrary', 791 element1, element2, 'importedLibrary',
770 element1.deferredImport, element2.deferredImport); 792 element1.deferredImport, element2.deferredImport);
771 // TODO(johnniwinther): Check members. 793 // TODO(johnniwinther): Check members.
772 } 794 }
773 } 795 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/types/constants.dart ('k') | tests/compiler/dart2js/serialization/model_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698