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

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

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

Powered by Google App Engine
This is Rietveld 408576698