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

Side by Side Diff: pkg/compiler/lib/src/serialization/modelz.dart

Issue 1859343004: dartfmt pkg/compiler (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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 /// Implementation of the element model used for deserialiation. 5 /// Implementation of the element model used for deserialiation.
6 /// 6 ///
7 /// These classes are created by [ElementDeserializer] triggered by the 7 /// These classes are created by [ElementDeserializer] triggered by the
8 /// [Deserializer]. 8 /// [Deserializer].
9 9
10 library dart2js.serialization.modelz; 10 library dart2js.serialization.modelz;
11 11
12 import '../common.dart'; 12 import '../common.dart';
13 import '../common/resolution.dart' show 13 import '../common/resolution.dart' show Resolution;
14 Resolution;
15 import '../constants/constructors.dart'; 14 import '../constants/constructors.dart';
16 import '../constants/expressions.dart'; 15 import '../constants/expressions.dart';
17 import '../core_types.dart'; 16 import '../core_types.dart';
18 import '../dart_types.dart'; 17 import '../dart_types.dart';
19 import '../elements/elements.dart'; 18 import '../elements/elements.dart';
20 import '../elements/modelx.dart' show 19 import '../elements/modelx.dart' show FunctionSignatureX;
21 FunctionSignatureX;
22 import '../elements/common.dart'; 20 import '../elements/common.dart';
23 import '../elements/visitor.dart'; 21 import '../elements/visitor.dart';
24 import '../io/source_file.dart'; 22 import '../io/source_file.dart';
25 import '../ordered_typeset.dart'; 23 import '../ordered_typeset.dart';
26 import '../resolution/class_members.dart' as class_members; 24 import '../resolution/class_members.dart' as class_members;
27 import '../resolution/tree_elements.dart' show 25 import '../resolution/tree_elements.dart' show TreeElements;
28 TreeElements; 26 import '../resolution/scope.dart' show Scope;
29 import '../resolution/scope.dart' show
30 Scope;
31 import '../script.dart'; 27 import '../script.dart';
32 import '../serialization/constant_serialization.dart'; 28 import '../serialization/constant_serialization.dart';
33 import '../tokens/token.dart' show 29 import '../tokens/token.dart' show Token;
34 Token;
35 import '../tree/tree.dart'; 30 import '../tree/tree.dart';
36 import '../util/util.dart' show 31 import '../util/util.dart' show Link, LinkBuilder;
37 Link,
38 LinkBuilder;
39 32
40 import 'keys.dart'; 33 import 'keys.dart';
41 import 'serialization.dart'; 34 import 'serialization.dart';
42 35
43 /// Compute a [Link] from an [Iterable]. 36 /// Compute a [Link] from an [Iterable].
44 Link toLink(Iterable iterable) { 37 Link toLink(Iterable iterable) {
45 LinkBuilder builder = new LinkBuilder(); 38 LinkBuilder builder = new LinkBuilder();
46 for (var element in iterable) { 39 for (var element in iterable) {
47 builder.addLast(element); 40 builder.addLast(element);
48 } 41 }
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 } 245 }
253 } 246 }
254 247
255 Element lookup(String name) => _lookupMap[name]; 248 Element lookup(String name) => _lookupMap[name];
256 249
257 void forEach(f(Element element)) => _lookupMap.values.forEach(f); 250 void forEach(f(Element element)) => _lookupMap.values.forEach(f);
258 251
259 Iterable<Element> get values => _lookupMap.values; 252 Iterable<Element> get values => _lookupMap.values;
260 } 253 }
261 254
262
263 abstract class AnalyzableElementMixin implements AnalyzableElement, ElementZ { 255 abstract class AnalyzableElementMixin implements AnalyzableElement, ElementZ {
264 @override 256 @override
265 bool get hasTreeElements => _unsupported('hasTreeElements'); 257 bool get hasTreeElements => _unsupported('hasTreeElements');
266 258
267 @override 259 @override
268 TreeElements get treeElements => _unsupported('treeElements'); 260 TreeElements get treeElements => _unsupported('treeElements');
269 } 261 }
270 262
271
272 abstract class AstElementMixin implements AstElement, ElementZ { 263 abstract class AstElementMixin implements AstElement, ElementZ {
273 @override 264 @override
274 bool get hasNode => _unsupported('hasNode'); 265 bool get hasNode => _unsupported('hasNode');
275 266
276 @override 267 @override
277 bool get hasResolvedAst => _unsupported('hasResolvedAst'); 268 bool get hasResolvedAst => _unsupported('hasResolvedAst');
278 269
279 @override 270 @override
280 get node => _unsupported('node'); 271 get node => _unsupported('node');
281 272
282 @override 273 @override
283 ResolvedAst get resolvedAst => _unsupported('resolvedAst'); 274 ResolvedAst get resolvedAst => _unsupported('resolvedAst');
284 } 275 }
285 276
286 abstract class ContainerMixin 277 abstract class ContainerMixin
287 implements DeserializedElementZ, ScopeContainerElement { 278 implements DeserializedElementZ, ScopeContainerElement {
288 MappedContainer _membersMap = new MappedContainer(); 279 MappedContainer _membersMap = new MappedContainer();
289 280
290 @override 281 @override
291 Element localLookup(String name) { 282 Element localLookup(String name) {
292 return _membersMap.lookup( 283 return _membersMap.lookup(
293 name, _decoder.getMap(Key.MEMBERS, isOptional: true)); 284 name, _decoder.getMap(Key.MEMBERS, isOptional: true));
294 } 285 }
295 286
296 @override 287 @override
297 void forEachLocalMember(f(Element element)) { 288 void forEachLocalMember(f(Element element)) {
298 MapDecoder members = 289 MapDecoder members = _decoder.getMap(Key.MEMBERS, isOptional: true);
299 _decoder.getMap(Key.MEMBERS, isOptional: true);
300 if (members == null) return; 290 if (members == null) return;
301 members.forEachKey((String key) { 291 members.forEachKey((String key) {
302 Element member = members.getElement(key); 292 Element member = members.getElement(key);
303 if (member != null) { 293 if (member != null) {
304 f(member); 294 f(member);
305 } 295 }
306 }); 296 });
307 } 297 }
308 } 298 }
309 299
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 Element get enclosingElement => _canonicalElement.enclosingElement; 335 Element get enclosingElement => _canonicalElement.enclosingElement;
346 336
347 @override 337 @override
348 SourceSpan get sourcePosition => _canonicalElement.sourcePosition; 338 SourceSpan get sourcePosition => _canonicalElement.sourcePosition;
349 339
350 @override 340 @override
351 ClassElement get enclosingClass => _canonicalElement.enclosingClass; 341 ClassElement get enclosingClass => _canonicalElement.enclosingClass;
352 } 342 }
353 343
354 class LibraryElementZ extends DeserializedElementZ 344 class LibraryElementZ extends DeserializedElementZ
355 with AnalyzableElementMixin, 345 with AnalyzableElementMixin, ContainerMixin, LibraryElementCommon
356 ContainerMixin,
357 LibraryElementCommon
358 implements LibraryElement { 346 implements LibraryElement {
359 Uri _canonicalUri; 347 Uri _canonicalUri;
360 CompilationUnitElement _entryCompilationUnit; 348 CompilationUnitElement _entryCompilationUnit;
361 Link<CompilationUnitElement> _compilationUnits; 349 Link<CompilationUnitElement> _compilationUnits;
362 List<ImportElement> _imports; 350 List<ImportElement> _imports;
363 List<ExportElement> _exports; 351 List<ExportElement> _exports;
364 ListedContainer _exportsMap; 352 ListedContainer _exportsMap;
365 ListedContainer _importsMap; 353 ListedContainer _importsMap;
366 354
367 LibraryElementZ(ObjectDecoder decoder) 355 LibraryElementZ(ObjectDecoder decoder) : super(decoder);
368 : super(decoder);
369 356
370 @override 357 @override
371 ElementKind get kind => ElementKind.LIBRARY; 358 ElementKind get kind => ElementKind.LIBRARY;
372 359
373 @override 360 @override
374 Element get enclosingElement => null; 361 Element get enclosingElement => null;
375 362
376 @override 363 @override
377 String get name => entryCompilationUnit.name; 364 String get name => entryCompilationUnit.name;
378 365
(...skipping 20 matching lines...) Expand all
399 CompilationUnitElement get entryCompilationUnit { 386 CompilationUnitElement get entryCompilationUnit {
400 if (_entryCompilationUnit == null) { 387 if (_entryCompilationUnit == null) {
401 _entryCompilationUnit = _decoder.getElement(Key.COMPILATION_UNIT); 388 _entryCompilationUnit = _decoder.getElement(Key.COMPILATION_UNIT);
402 } 389 }
403 return _entryCompilationUnit; 390 return _entryCompilationUnit;
404 } 391 }
405 392
406 @override 393 @override
407 Link<CompilationUnitElement> get compilationUnits { 394 Link<CompilationUnitElement> get compilationUnits {
408 if (_compilationUnits == null) { 395 if (_compilationUnits == null) {
409 _compilationUnits = 396 _compilationUnits = toLink(_decoder.getElements(Key.COMPILATION_UNITS));
410 toLink(_decoder.getElements(Key.COMPILATION_UNITS));
411 } 397 }
412 return _compilationUnits; 398 return _compilationUnits;
413 } 399 }
414 400
415 @override 401 @override
416 bool get hasLibraryName { 402 bool get hasLibraryName {
417 return libraryName != ''; 403 return libraryName != '';
418 } 404 }
419 405
420 @override 406 @override
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 // TODO(johnniwinther): Support the distinction between [readableUri] and 501 // TODO(johnniwinther): Support the distinction between [readableUri] and
516 // [resourceUri]; needed for platform libraries. 502 // [resourceUri]; needed for platform libraries.
517 @override 503 @override
518 Uri get readableUri => resourceUri; 504 Uri get readableUri => resourceUri;
519 505
520 @override 506 @override
521 String get text => throw new UnsupportedError('ScriptZ.text'); 507 String get text => throw new UnsupportedError('ScriptZ.text');
522 } 508 }
523 509
524 class CompilationUnitElementZ extends DeserializedElementZ 510 class CompilationUnitElementZ extends DeserializedElementZ
525 with LibraryMemberMixin, 511 with LibraryMemberMixin, CompilationUnitElementCommon
526 CompilationUnitElementCommon
527 implements CompilationUnitElement { 512 implements CompilationUnitElement {
528 List<Element> _members; 513 List<Element> _members;
529 Script _script; 514 Script _script;
530 515
531 CompilationUnitElementZ(ObjectDecoder decoder) 516 CompilationUnitElementZ(ObjectDecoder decoder) : super(decoder);
532 : super(decoder);
533 517
534 @override 518 @override
535 ElementKind get kind => ElementKind.COMPILATION_UNIT; 519 ElementKind get kind => ElementKind.COMPILATION_UNIT;
536 520
537 @override 521 @override
538 CompilationUnitElement get compilationUnit => this; 522 CompilationUnitElement get compilationUnit => this;
539 523
540 @override 524 @override
541 Element get enclosingElement => library; 525 Element get enclosingElement => library;
542 526
543 @override 527 @override
544 accept(ElementVisitor visitor, arg) { 528 accept(ElementVisitor visitor, arg) {
545 return visitor.visitCompilationUnitElement(this, arg); 529 return visitor.visitCompilationUnitElement(this, arg);
546 } 530 }
547 531
548 @override 532 @override
549 void forEachLocalMember(f(Element element)) { 533 void forEachLocalMember(f(Element element)) {
550 if (_members == null) { 534 if (_members == null) {
551 _members = 535 _members = _decoder.getElements(Key.ELEMENTS, isOptional: true);
552 _decoder.getElements(Key.ELEMENTS, isOptional: true);
553 } 536 }
554 _members.forEach(f); 537 _members.forEach(f);
555 } 538 }
556 539
557 @override 540 @override
558 Script get script { 541 Script get script {
559 if (_script == null) { 542 if (_script == null) {
560 Uri resolvedUri = _decoder.getUri(Key.URI); 543 Uri resolvedUri = _decoder.getUri(Key.URI);
561 _script = new ScriptZ(resolvedUri); 544 _script = new ScriptZ(resolvedUri);
562 } 545 }
563 return _script; 546 return _script;
564 } 547 }
565 548
566 @override 549 @override
567 String get name => script.name; 550 String get name => script.name;
568 } 551 }
569 552
570
571 abstract class LibraryMemberMixin implements DeserializedElementZ { 553 abstract class LibraryMemberMixin implements DeserializedElementZ {
572 LibraryElement _library; 554 LibraryElement _library;
573 CompilationUnitElement _compilationUnit; 555 CompilationUnitElement _compilationUnit;
574 556
575 @override 557 @override
576 LibraryElement get library { 558 LibraryElement get library {
577 if (_library == null) { 559 if (_library == null) {
578 _library = _decoder.getElement(Key.LIBRARY); 560 _library = _decoder.getElement(Key.LIBRARY);
579 } 561 }
580 return _library; 562 return _library;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 } 619 }
638 620
639 abstract class StaticMemberMixin implements DeserializedElementZ { 621 abstract class StaticMemberMixin implements DeserializedElementZ {
640 @override 622 @override
641 bool get isTopLevel => false; 623 bool get isTopLevel => false;
642 624
643 @override 625 @override
644 bool get isStatic => true; 626 bool get isStatic => true;
645 } 627 }
646 628
647 abstract class TypedElementMixin 629 abstract class TypedElementMixin implements DeserializedElementZ, TypedElement {
648 implements DeserializedElementZ, TypedElement {
649 DartType _type; 630 DartType _type;
650 631
651 @override 632 @override
652 DartType get type { 633 DartType get type {
653 if (_type == null) { 634 if (_type == null) {
654 _type = _decoder.getType(Key.TYPE); 635 _type = _decoder.getType(Key.TYPE);
655 } 636 }
656 return _type; 637 return _type;
657 } 638 }
658 639
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 optionalParameterTypes.add(parameter.type); 674 optionalParameterTypes.add(parameter.type);
694 } 675 }
695 } else { 676 } else {
696 requiredParameterCount++; 677 requiredParameterCount++;
697 optionalParameters.add(parameter); 678 optionalParameters.add(parameter);
698 parameterTypes.add(parameter.type); 679 parameterTypes.add(parameter.type);
699 } 680 }
700 } 681 }
701 if (optionalParametersAreNamed) { 682 if (optionalParametersAreNamed) {
702 orderedOptionalParameters.sort((Element a, Element b) { 683 orderedOptionalParameters.sort((Element a, Element b) {
703 return a.name.compareTo(b.name); 684 return a.name.compareTo(b.name);
704 }); 685 });
705 } 686 }
706 687
707 FunctionType type = new FunctionType( 688 FunctionType type = new FunctionType(
708 this, 689 this,
709 _decoder.getType(Key.RETURN_TYPE), 690 _decoder.getType(Key.RETURN_TYPE),
710 parameterTypes, 691 parameterTypes,
711 optionalParameterTypes, 692 optionalParameterTypes,
712 namedParameters, 693 namedParameters,
713 namedParameterTypes); 694 namedParameterTypes);
(...skipping 20 matching lines...) Expand all
734 abstract class FunctionTypedElementMixin 715 abstract class FunctionTypedElementMixin
735 implements FunctionElement, DeserializedElementZ { 716 implements FunctionElement, DeserializedElementZ {
736 @override 717 @override
737 AsyncMarker get asyncMarker => _unsupported('asyncMarker'); 718 AsyncMarker get asyncMarker => _unsupported('asyncMarker');
738 719
739 @override 720 @override
740 FunctionElement asFunctionElement() => this; 721 FunctionElement asFunctionElement() => this;
741 722
742 @override 723 @override
743 bool get isExternal { 724 bool get isExternal {
744 return _decoder.getBool( 725 return _decoder.getBool(Key.IS_EXTERNAL,
745 Key.IS_EXTERNAL, isOptional: true, defaultValue: false); 726 isOptional: true, defaultValue: false);
746 } 727 }
747 } 728 }
748 729
749 abstract class ClassElementMixin implements ElementZ, ClassElement { 730 abstract class ClassElementMixin implements ElementZ, ClassElement {
750 InterfaceType _createType(List<DartType> typeArguments) { 731 InterfaceType _createType(List<DartType> typeArguments) {
751 return new InterfaceType(this, typeArguments); 732 return new InterfaceType(this, typeArguments);
752 } 733 }
753 734
754 @override 735 @override
755 ElementKind get kind => ElementKind.CLASS; 736 ElementKind get kind => ElementKind.CLASS;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 @override 778 @override
798 void reverseBackendMembers() => _unsupported('reverseBackendMembers'); 779 void reverseBackendMembers() => _unsupported('reverseBackendMembers');
799 780
800 @override 781 @override
801 ClassElement get superclass => supertype != null ? supertype.element : null; 782 ClassElement get superclass => supertype != null ? supertype.element : null;
802 783
803 @override 784 @override
804 void ensureResolved(Resolution resolution) { 785 void ensureResolved(Resolution resolution) {
805 resolution.registerClass(this); 786 resolution.registerClass(this);
806 } 787 }
807
808 } 788 }
809 789
810 class ClassElementZ extends DeserializedElementZ 790 class ClassElementZ extends DeserializedElementZ
811 with AnalyzableElementMixin, 791 with
812 AstElementMixin, 792 AnalyzableElementMixin,
813 ClassElementCommon, 793 AstElementMixin,
814 class_members.ClassMemberMixin, 794 ClassElementCommon,
815 ContainerMixin, 795 class_members.ClassMemberMixin,
816 LibraryMemberMixin, 796 ContainerMixin,
817 TypeDeclarationMixin<InterfaceType>, 797 LibraryMemberMixin,
818 ClassElementMixin 798 TypeDeclarationMixin<InterfaceType>,
799 ClassElementMixin
819 implements ClassElement { 800 implements ClassElement {
820 bool _isObject; 801 bool _isObject;
821 DartType _supertype; 802 DartType _supertype;
822 OrderedTypeSet _allSupertypesAndSelf; 803 OrderedTypeSet _allSupertypesAndSelf;
823 Link<DartType> _interfaces; 804 Link<DartType> _interfaces;
824 FunctionType _callType; 805 FunctionType _callType;
825 806
826 ClassElementZ(ObjectDecoder decoder) 807 ClassElementZ(ObjectDecoder decoder) : super(decoder);
827 : super(decoder);
828 808
829 @override 809 @override
830 List<DartType> _getTypeVariables() { 810 List<DartType> _getTypeVariables() {
831 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true); 811 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true);
832 } 812 }
833 813
834 void _ensureSuperHierarchy() { 814 void _ensureSuperHierarchy() {
835 if (_interfaces == null) { 815 if (_interfaces == null) {
836 InterfaceType supertype = 816 InterfaceType supertype =
837 _decoder.getType(Key.SUPERTYPE, isOptional: true); 817 _decoder.getType(Key.SUPERTYPE, isOptional: true);
838 if (supertype == null) { 818 if (supertype == null) {
839 _isObject = true; 819 _isObject = true;
840 _allSupertypesAndSelf = new OrderedTypeSet.singleton(thisType); 820 _allSupertypesAndSelf = new OrderedTypeSet.singleton(thisType);
841 _interfaces = const Link<DartType>(); 821 _interfaces = const Link<DartType>();
842 } else { 822 } else {
843 _isObject = false; 823 _isObject = false;
844 _interfaces = toLink( 824 _interfaces =
845 _decoder.getTypes(Key.INTERFACES, isOptional: true)); 825 toLink(_decoder.getTypes(Key.INTERFACES, isOptional: true));
846 List<InterfaceType> mixins = 826 List<InterfaceType> mixins =
847 _decoder.getTypes(Key.MIXINS, isOptional: true); 827 _decoder.getTypes(Key.MIXINS, isOptional: true);
848 for (InterfaceType mixin in mixins) { 828 for (InterfaceType mixin in mixins) {
849 MixinApplicationElement mixinElement = 829 MixinApplicationElement mixinElement =
850 new UnnamedMixinApplicationElementZ(this, supertype, mixin); 830 new UnnamedMixinApplicationElementZ(this, supertype, mixin);
851 supertype = mixinElement.thisType.subst( 831 supertype = mixinElement.thisType
852 typeVariables, mixinElement.typeVariables); 832 .subst(typeVariables, mixinElement.typeVariables);
853 } 833 }
854 _supertype = supertype; 834 _supertype = supertype;
855 _allSupertypesAndSelf = 835 _allSupertypesAndSelf = new OrderedTypeSetBuilder(this)
856 new OrderedTypeSetBuilder(this) 836 .createOrderedTypeSet(_supertype, _interfaces);
857 .createOrderedTypeSet(_supertype, _interfaces);
858 _callType = _decoder.getType(Key.CALL_TYPE, isOptional: true); 837 _callType = _decoder.getType(Key.CALL_TYPE, isOptional: true);
859 } 838 }
860 } 839 }
861 } 840 }
862 841
863 @override 842 @override
864 accept(ElementVisitor visitor, arg) { 843 accept(ElementVisitor visitor, arg) {
865 return visitor.visitClassElement(this, arg); 844 return visitor.visitClassElement(this, arg);
866 } 845 }
867 846
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 builder.addLast( 904 builder.addLast(
926 new ForwardingConstructorElementZ(this, definingConstructor)); 905 new ForwardingConstructorElementZ(this, definingConstructor));
927 } 906 }
928 } 907 }
929 _constructors = builder.toLink(); 908 _constructors = builder.toLink();
930 } 909 }
931 return _constructors; 910 return _constructors;
932 } 911 }
933 } 912 }
934 913
935
936 class NamedMixinApplicationElementZ extends ClassElementZ 914 class NamedMixinApplicationElementZ extends ClassElementZ
937 with MixinApplicationElementCommon, 915 with MixinApplicationElementCommon, MixinApplicationElementMixin {
938 MixinApplicationElementMixin {
939 InterfaceType _mixinType; 916 InterfaceType _mixinType;
940 917
941 NamedMixinApplicationElementZ(ObjectDecoder decoder) 918 NamedMixinApplicationElementZ(ObjectDecoder decoder) : super(decoder);
942 : super(decoder);
943 919
944 @override 920 @override
945 InterfaceType get mixinType =>_mixinType ??= _decoder.getType(Key.MIXIN); 921 InterfaceType get mixinType => _mixinType ??= _decoder.getType(Key.MIXIN);
946 } 922 }
947 923
948
949 class UnnamedMixinApplicationElementZ extends ElementZ 924 class UnnamedMixinApplicationElementZ extends ElementZ
950 with ClassElementCommon, 925 with
951 ClassElementMixin, 926 ClassElementCommon,
952 class_members.ClassMemberMixin, 927 ClassElementMixin,
953 TypeDeclarationMixin<InterfaceType>, 928 class_members.ClassMemberMixin,
954 AnalyzableElementMixin, 929 TypeDeclarationMixin<InterfaceType>,
955 AstElementMixin, 930 AnalyzableElementMixin,
956 MixinApplicationElementCommon, 931 AstElementMixin,
957 MixinApplicationElementMixin { 932 MixinApplicationElementCommon,
933 MixinApplicationElementMixin {
958 final String name; 934 final String name;
959 final ClassElement _subclass; 935 final ClassElement _subclass;
960 final InterfaceType supertype; 936 final InterfaceType supertype;
961 final Link<DartType> interfaces; 937 final Link<DartType> interfaces;
962 OrderedTypeSet _allSupertypesAndSelf; 938 OrderedTypeSet _allSupertypesAndSelf;
963 939
964 UnnamedMixinApplicationElementZ( 940 UnnamedMixinApplicationElementZ(
965 ClassElement subclass, 941 ClassElement subclass, InterfaceType supertype, InterfaceType mixin)
966 InterfaceType supertype, InterfaceType mixin)
967 : this._subclass = subclass, 942 : this._subclass = subclass,
968 this.supertype = supertype, 943 this.supertype = supertype,
969 this.interfaces = const Link<DartType>().prepend(mixin), 944 this.interfaces = const Link<DartType>().prepend(mixin),
970 this.name = "${supertype.name}+${mixin.name}"; 945 this.name = "${supertype.name}+${mixin.name}";
971 946
972 @override 947 @override
973 CompilationUnitElement get compilationUnit => _subclass.compilationUnit; 948 CompilationUnitElement get compilationUnit => _subclass.compilationUnit;
974 949
975 @override 950 @override
976 bool get isUnnamedMixinApplication => true; 951 bool get isUnnamedMixinApplication => true;
(...skipping 22 matching lines...) Expand all
999 } 974 }
1000 975
1001 @override 976 @override
1002 accept(ElementVisitor visitor, arg) { 977 accept(ElementVisitor visitor, arg) {
1003 return visitor.visitMixinApplicationElement(this, arg); 978 return visitor.visitMixinApplicationElement(this, arg);
1004 } 979 }
1005 980
1006 @override 981 @override
1007 OrderedTypeSet get allSupertypesAndSelf { 982 OrderedTypeSet get allSupertypesAndSelf {
1008 if (_allSupertypesAndSelf == null) { 983 if (_allSupertypesAndSelf == null) {
1009 _allSupertypesAndSelf = 984 _allSupertypesAndSelf = new OrderedTypeSetBuilder(this)
1010 new OrderedTypeSetBuilder(this) 985 .createOrderedTypeSet(supertype, interfaces);
1011 .createOrderedTypeSet(supertype, interfaces);
1012 } 986 }
1013 return _allSupertypesAndSelf; 987 return _allSupertypesAndSelf;
1014 } 988 }
1015 989
1016 @override 990 @override
1017 Element get enclosingElement => _subclass.enclosingElement; 991 Element get enclosingElement => _subclass.enclosingElement;
1018 992
1019 @override 993 @override
1020 bool get isObject => false; 994 bool get isObject => false;
1021 995
1022 @override 996 @override
1023 bool get isProxy => false; 997 bool get isProxy => false;
1024 998
1025 @override 999 @override
1026 LibraryElement get library => enclosingElement.library; 1000 LibraryElement get library => enclosingElement.library;
1027 1001
1028 @override 1002 @override
1029 InterfaceType get mixinType => interfaces.head; 1003 InterfaceType get mixinType => interfaces.head;
1030 1004
1031 @override 1005 @override
1032 SourceSpan get sourcePosition => _subclass.sourcePosition; 1006 SourceSpan get sourcePosition => _subclass.sourcePosition;
1033 } 1007 }
1034 1008
1035
1036 class EnumClassElementZ extends ClassElementZ implements EnumClassElement { 1009 class EnumClassElementZ extends ClassElementZ implements EnumClassElement {
1037 List<FieldElement> _enumValues; 1010 List<FieldElement> _enumValues;
1038 1011
1039 EnumClassElementZ(ObjectDecoder decoder) 1012 EnumClassElementZ(ObjectDecoder decoder) : super(decoder);
1040 : super(decoder);
1041 1013
1042 @override 1014 @override
1043 bool get isEnumClass => true; 1015 bool get isEnumClass => true;
1044 1016
1045 @override 1017 @override
1046 List<FieldElement> get enumValues { 1018 List<FieldElement> get enumValues {
1047 if (_enumValues == null) { 1019 if (_enumValues == null) {
1048 _enumValues = _decoder.getElements(Key.FIELDS); 1020 _enumValues = _decoder.getElements(Key.FIELDS);
1049 } 1021 }
1050 return _enumValues; 1022 return _enumValues;
1051 } 1023 }
1052 } 1024 }
1053 1025
1054 abstract class ConstructorElementZ extends DeserializedElementZ 1026 abstract class ConstructorElementZ extends DeserializedElementZ
1055 with AnalyzableElementMixin, 1027 with
1056 AstElementMixin, 1028 AnalyzableElementMixin,
1057 ClassMemberMixin, 1029 AstElementMixin,
1058 FunctionTypedElementMixin, 1030 ClassMemberMixin,
1059 ParametersMixin, 1031 FunctionTypedElementMixin,
1060 TypedElementMixin, 1032 ParametersMixin,
1061 MemberElementMixin 1033 TypedElementMixin,
1034 MemberElementMixin
1062 implements ConstructorElement { 1035 implements ConstructorElement {
1063 ConstantConstructor _constantConstructor; 1036 ConstantConstructor _constantConstructor;
1064 1037
1065 ConstructorElementZ(ObjectDecoder decoder) 1038 ConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1066 : super(decoder);
1067 1039
1068 accept(ElementVisitor visitor, arg) { 1040 accept(ElementVisitor visitor, arg) {
1069 return visitor.visitConstructorElement(this, arg); 1041 return visitor.visitConstructorElement(this, arg);
1070 } 1042 }
1071 1043
1072 @override 1044 @override
1073 bool get isConst => _decoder.getBool(Key.IS_CONST); 1045 bool get isConst => _decoder.getBool(Key.IS_CONST);
1074 1046
1075 @override 1047 @override
1076 bool get isExternal => _decoder.getBool(Key.IS_EXTERNAL); 1048 bool get isExternal => _decoder.getBool(Key.IS_EXTERNAL);
1077 1049
1078 bool get isFromEnvironmentConstructor { 1050 bool get isFromEnvironmentConstructor {
1079 return name == 'fromEnvironment' && 1051 return name == 'fromEnvironment' &&
1080 library.isDartCore && 1052 library.isDartCore &&
1081 (enclosingClass.name == 'bool' || 1053 (enclosingClass.name == 'bool' ||
1082 enclosingClass.name == 'int' || 1054 enclosingClass.name == 'int' ||
1083 enclosingClass.name == 'String'); 1055 enclosingClass.name == 'String');
1084 } 1056 }
1085 1057
1086 ConstantConstructor get constantConstructor { 1058 ConstantConstructor get constantConstructor {
1087 if (isConst && _constantConstructor == null) { 1059 if (isConst && _constantConstructor == null) {
1088 ObjectDecoder data = 1060 ObjectDecoder data =
1089 _decoder.getObject(Key.CONSTRUCTOR, isOptional: true); 1061 _decoder.getObject(Key.CONSTRUCTOR, isOptional: true);
1090 if (data == null) { 1062 if (data == null) {
1091 assert(isFromEnvironmentConstructor || isExternal); 1063 assert(isFromEnvironmentConstructor || isExternal);
1092 return null; 1064 return null;
1093 } 1065 }
1094 _constantConstructor = ConstantConstructorDeserializer.deserialize(data); 1066 _constantConstructor = ConstantConstructorDeserializer.deserialize(data);
1095 } 1067 }
1096 return _constantConstructor; 1068 return _constantConstructor;
1097 } 1069 }
1098 1070
1099 @override 1071 @override
1100 AsyncMarker get asyncMarker => _unsupported('asyncMarker'); 1072 AsyncMarker get asyncMarker => _unsupported('asyncMarker');
1101 1073
1102 @override 1074 @override
1103 InterfaceType computeEffectiveTargetType(InterfaceType newType) { 1075 InterfaceType computeEffectiveTargetType(InterfaceType newType) {
1104 return _unsupported('computeEffectiveTargetType'); 1076 return _unsupported('computeEffectiveTargetType');
1105 } 1077 }
1106 1078
1107 @override 1079 @override
1108 ConstructorElement get definingConstructor { 1080 ConstructorElement get definingConstructor {
1109 return _unsupported('definingConstructor'); 1081 return _unsupported('definingConstructor');
1110 } 1082 }
1111 1083
1112 @override 1084 @override
1113 ConstructorElement get effectiveTarget { 1085 ConstructorElement get effectiveTarget {
1114 return _unsupported('effectiveTarget'); 1086 return _unsupported('effectiveTarget');
1115 } 1087 }
1116 1088
1117 @override 1089 @override
1118 ConstructorElement get immediateRedirectionTarget { 1090 ConstructorElement get immediateRedirectionTarget {
1119 return _unsupported('immediateRedirectionTarget'); 1091 return _unsupported('immediateRedirectionTarget');
1120 } 1092 }
1121 1093
1122 @override 1094 @override
1123 bool get isEffectiveTargetMalformed { 1095 bool get isEffectiveTargetMalformed {
1124 return _unsupported('isEffectiveTargetMalformed'); 1096 return _unsupported('isEffectiveTargetMalformed');
1125 } 1097 }
1126 1098
1127 @override 1099 @override
1128 bool get isRedirectingFactory => _unsupported('isRedirectingFactory'); 1100 bool get isRedirectingFactory => _unsupported('isRedirectingFactory');
1129 1101
1130 @override 1102 @override
1131 bool get isRedirectingGenerative => _unsupported('isRedirectingGenerative'); 1103 bool get isRedirectingGenerative => _unsupported('isRedirectingGenerative');
1132 1104
1133 @override 1105 @override
1134 bool get isCyclicRedirection => _unsupported('isCyclicRedirection'); 1106 bool get isCyclicRedirection => _unsupported('isCyclicRedirection');
1135 1107
1136 @override 1108 @override
1137 PrefixElement get redirectionDeferredPrefix { 1109 PrefixElement get redirectionDeferredPrefix {
1138 return _unsupported('redirectionDeferredPrefix'); 1110 return _unsupported('redirectionDeferredPrefix');
1139 } 1111 }
1140 } 1112 }
1141 1113
1142 class GenerativeConstructorElementZ extends ConstructorElementZ { 1114 class GenerativeConstructorElementZ extends ConstructorElementZ {
1143 GenerativeConstructorElementZ(ObjectDecoder decoder) 1115 GenerativeConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1144 : super(decoder);
1145 1116
1146 @override 1117 @override
1147 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR; 1118 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR;
1148 1119
1149 @override 1120 @override
1150 bool get isEffectiveTargetMalformed => 1121 bool get isEffectiveTargetMalformed =>
1151 _unsupported('isEffectiveTargetMalformed'); 1122 _unsupported('isEffectiveTargetMalformed');
1152 } 1123 }
1153 1124
1154 class FactoryConstructorElementZ extends ConstructorElementZ { 1125 class FactoryConstructorElementZ extends ConstructorElementZ {
1155 1126 FactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1156 FactoryConstructorElementZ(ObjectDecoder decoder)
1157 : super(decoder);
1158 1127
1159 @override 1128 @override
1160 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR; 1129 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR;
1161 1130
1162 @override 1131 @override
1163 bool get isEffectiveTargetMalformed => 1132 bool get isEffectiveTargetMalformed =>
1164 _unsupported('isEffectiveTargetMalformed'); 1133 _unsupported('isEffectiveTargetMalformed');
1165 } 1134 }
1166 1135
1167 class ForwardingConstructorElementZ extends ElementZ 1136 class ForwardingConstructorElementZ extends ElementZ
1168 with AnalyzableElementMixin, 1137 with AnalyzableElementMixin, AstElementMixin
1169 AstElementMixin
1170 implements ConstructorElement { 1138 implements ConstructorElement {
1171 final MixinApplicationElement enclosingClass; 1139 final MixinApplicationElement enclosingClass;
1172 final ConstructorElement definingConstructor; 1140 final ConstructorElement definingConstructor;
1173 1141
1174 ForwardingConstructorElementZ(this.enclosingClass, this.definingConstructor); 1142 ForwardingConstructorElementZ(this.enclosingClass, this.definingConstructor);
1175 1143
1176 @override 1144 @override
1177 CompilationUnitElement get compilationUnit => enclosingClass.compilationUnit; 1145 CompilationUnitElement get compilationUnit => enclosingClass.compilationUnit;
1178 1146
1179 @override 1147 @override
(...skipping 23 matching lines...) Expand all
1203 1171
1204 @override 1172 @override
1205 Element get enclosingElement => enclosingClass; 1173 Element get enclosingElement => enclosingClass;
1206 1174
1207 @override 1175 @override
1208 FunctionSignature get functionSignature { 1176 FunctionSignature get functionSignature {
1209 return _unsupported('functionSignature'); 1177 return _unsupported('functionSignature');
1210 } 1178 }
1211 1179
1212 @override 1180 @override
1213 bool get hasFunctionSignature { 1181 bool get hasFunctionSignature {
1214 return _unsupported('hasFunctionSignature'); 1182 return _unsupported('hasFunctionSignature');
1215 } 1183 }
1216 1184
1217 @override 1185 @override
1218 ConstructorElement get immediateRedirectionTarget => null; 1186 ConstructorElement get immediateRedirectionTarget => null;
1219 1187
1220 @override 1188 @override
1221 bool get isCyclicRedirection => false; 1189 bool get isCyclicRedirection => false;
1222 1190
1223 @override 1191 @override
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 @override 1238 @override
1271 FunctionType get type { 1239 FunctionType get type {
1272 // TODO(johnniwinther): Ensure that the function type substitutes type 1240 // TODO(johnniwinther): Ensure that the function type substitutes type
1273 // variables correctly. 1241 // variables correctly.
1274 return definingConstructor.type; 1242 return definingConstructor.type;
1275 } 1243 }
1276 } 1244 }
1277 1245
1278 abstract class MemberElementMixin 1246 abstract class MemberElementMixin
1279 implements DeserializedElementZ, MemberElement { 1247 implements DeserializedElementZ, MemberElement {
1280
1281 @override 1248 @override
1282 MemberElement get memberContext => this; 1249 MemberElement get memberContext => this;
1283 1250
1284 @override 1251 @override
1285 Name get memberName => new Name(name, library); 1252 Name get memberName => new Name(name, library);
1286 1253
1287 @override 1254 @override
1288 List<FunctionElement> get nestedClosures => const <FunctionElement>[]; 1255 List<FunctionElement> get nestedClosures => const <FunctionElement>[];
1289
1290 } 1256 }
1291 1257
1292 abstract class FieldElementZ extends DeserializedElementZ 1258 abstract class FieldElementZ extends DeserializedElementZ
1293 with AnalyzableElementMixin, 1259 with
1294 AstElementMixin, 1260 AnalyzableElementMixin,
1295 TypedElementMixin, 1261 AstElementMixin,
1296 MemberElementMixin 1262 TypedElementMixin,
1263 MemberElementMixin
1297 implements FieldElement { 1264 implements FieldElement {
1298 ConstantExpression _constant; 1265 ConstantExpression _constant;
1299 1266
1300 FieldElementZ(ObjectDecoder decoder) 1267 FieldElementZ(ObjectDecoder decoder) : super(decoder);
1301 : super(decoder);
1302 1268
1303 @override 1269 @override
1304 ElementKind get kind => ElementKind.FIELD; 1270 ElementKind get kind => ElementKind.FIELD;
1305 1271
1306 @override 1272 @override
1307 accept(ElementVisitor visitor, arg) { 1273 accept(ElementVisitor visitor, arg) {
1308 return visitor.visitFieldElement(this, arg); 1274 return visitor.visitFieldElement(this, arg);
1309 } 1275 }
1310 1276
1311 @override 1277 @override
1312 bool get isFinal => _decoder.getBool(Key.IS_FINAL); 1278 bool get isFinal => _decoder.getBool(Key.IS_FINAL);
1313 1279
1314 @override 1280 @override
1315 bool get isConst => _decoder.getBool(Key.IS_CONST); 1281 bool get isConst => _decoder.getBool(Key.IS_CONST);
1316 1282
1317 @override 1283 @override
1318 ConstantExpression get constant { 1284 ConstantExpression get constant {
1319 if (isConst && _constant == null) { 1285 if (isConst && _constant == null) {
1320 _constant = _decoder.getConstant(Key.CONSTANT); 1286 _constant = _decoder.getConstant(Key.CONSTANT);
1321 } 1287 }
1322 return _constant; 1288 return _constant;
1323 } 1289 }
1324 1290
1325 @override 1291 @override
1326 Expression get initializer => _unsupported('initializer'); 1292 Expression get initializer => _unsupported('initializer');
1327 } 1293 }
1328 1294
1329
1330 class TopLevelFieldElementZ extends FieldElementZ with LibraryMemberMixin { 1295 class TopLevelFieldElementZ extends FieldElementZ with LibraryMemberMixin {
1331 TopLevelFieldElementZ(ObjectDecoder decoder) 1296 TopLevelFieldElementZ(ObjectDecoder decoder) : super(decoder);
1332 : super(decoder);
1333 } 1297 }
1334 1298
1335 class StaticFieldElementZ extends FieldElementZ 1299 class StaticFieldElementZ extends FieldElementZ
1336 with ClassMemberMixin, StaticMemberMixin { 1300 with ClassMemberMixin, StaticMemberMixin {
1337 StaticFieldElementZ(ObjectDecoder decoder) 1301 StaticFieldElementZ(ObjectDecoder decoder) : super(decoder);
1338 : super(decoder);
1339 } 1302 }
1340 1303
1341 class InstanceFieldElementZ extends FieldElementZ 1304 class InstanceFieldElementZ extends FieldElementZ
1342 with ClassMemberMixin, InstanceMemberMixin { 1305 with ClassMemberMixin, InstanceMemberMixin {
1343 InstanceFieldElementZ(ObjectDecoder decoder) 1306 InstanceFieldElementZ(ObjectDecoder decoder) : super(decoder);
1344 : super(decoder);
1345 } 1307 }
1346 1308
1347 abstract class FunctionElementZ extends DeserializedElementZ 1309 abstract class FunctionElementZ extends DeserializedElementZ
1348 with AnalyzableElementMixin, 1310 with
1349 AstElementMixin, 1311 AnalyzableElementMixin,
1350 ParametersMixin, 1312 AstElementMixin,
1351 FunctionTypedElementMixin, 1313 ParametersMixin,
1352 TypedElementMixin, 1314 FunctionTypedElementMixin,
1353 MemberElementMixin 1315 TypedElementMixin,
1316 MemberElementMixin
1354 implements MethodElement { 1317 implements MethodElement {
1355 FunctionElementZ(ObjectDecoder decoder) 1318 FunctionElementZ(ObjectDecoder decoder) : super(decoder);
1356 : super(decoder);
1357 1319
1358 @override 1320 @override
1359 ElementKind get kind => ElementKind.FUNCTION; 1321 ElementKind get kind => ElementKind.FUNCTION;
1360 1322
1361 @override 1323 @override
1362 accept(ElementVisitor visitor, arg) { 1324 accept(ElementVisitor visitor, arg) {
1363 return visitor.visitMethodElement(this, arg); 1325 return visitor.visitMethodElement(this, arg);
1364 } 1326 }
1365 1327
1366 @override 1328 @override
1367 bool get isOperator => _decoder.getBool(Key.IS_OPERATOR); 1329 bool get isOperator => _decoder.getBool(Key.IS_OPERATOR);
1368 } 1330 }
1369 1331
1370 class TopLevelFunctionElementZ extends FunctionElementZ 1332 class TopLevelFunctionElementZ extends FunctionElementZ
1371 with LibraryMemberMixin { 1333 with LibraryMemberMixin {
1372 TopLevelFunctionElementZ(ObjectDecoder decoder) 1334 TopLevelFunctionElementZ(ObjectDecoder decoder) : super(decoder);
1373 : super(decoder);
1374 } 1335 }
1375 1336
1376 class StaticFunctionElementZ extends FunctionElementZ 1337 class StaticFunctionElementZ extends FunctionElementZ
1377 with ClassMemberMixin, StaticMemberMixin { 1338 with ClassMemberMixin, StaticMemberMixin {
1378 StaticFunctionElementZ(ObjectDecoder decoder) 1339 StaticFunctionElementZ(ObjectDecoder decoder) : super(decoder);
1379 : super(decoder);
1380 } 1340 }
1381 1341
1382 class InstanceFunctionElementZ extends FunctionElementZ 1342 class InstanceFunctionElementZ extends FunctionElementZ
1383 with ClassMemberMixin, InstanceMemberMixin { 1343 with ClassMemberMixin, InstanceMemberMixin {
1384 InstanceFunctionElementZ(ObjectDecoder decoder) 1344 InstanceFunctionElementZ(ObjectDecoder decoder) : super(decoder);
1385 : super(decoder);
1386 } 1345 }
1387 1346
1388 abstract class LocalExecutableMixin 1347 abstract class LocalExecutableMixin
1389 implements DeserializedElementZ, ExecutableElement, LocalElement { 1348 implements DeserializedElementZ, ExecutableElement, LocalElement {
1390 ExecutableElement _executableContext; 1349 ExecutableElement _executableContext;
1391 1350
1392 @override 1351 @override
1393 Element get enclosingElement => executableContext; 1352 Element get enclosingElement => executableContext;
1394 1353
1395 @override 1354 @override
(...skipping 19 matching lines...) Expand all
1415 } 1374 }
1416 1375
1417 @override 1376 @override
1418 bool get hasTreeElements => memberContext.hasTreeElements; 1377 bool get hasTreeElements => memberContext.hasTreeElements;
1419 1378
1420 @override 1379 @override
1421 TreeElements get treeElements => memberContext.treeElements; 1380 TreeElements get treeElements => memberContext.treeElements;
1422 } 1381 }
1423 1382
1424 class LocalFunctionElementZ extends DeserializedElementZ 1383 class LocalFunctionElementZ extends DeserializedElementZ
1425 with LocalExecutableMixin, 1384 with
1426 AstElementMixin, 1385 LocalExecutableMixin,
1427 ParametersMixin, 1386 AstElementMixin,
1428 FunctionTypedElementMixin, 1387 ParametersMixin,
1429 TypedElementMixin 1388 FunctionTypedElementMixin,
1389 TypedElementMixin
1430 implements LocalFunctionElement { 1390 implements LocalFunctionElement {
1431 LocalFunctionElementZ(ObjectDecoder decoder) 1391 LocalFunctionElementZ(ObjectDecoder decoder) : super(decoder);
1432 : super(decoder);
1433 1392
1434 @override 1393 @override
1435 accept(ElementVisitor visitor, arg) { 1394 accept(ElementVisitor visitor, arg) {
1436 return visitor.visitLocalFunctionElement(this, arg); 1395 return visitor.visitLocalFunctionElement(this, arg);
1437 } 1396 }
1438 1397
1439 @override 1398 @override
1440 ElementKind get kind => ElementKind.FUNCTION; 1399 ElementKind get kind => ElementKind.FUNCTION;
1441 } 1400 }
1442 1401
1443 abstract class GetterElementZ extends DeserializedElementZ 1402 abstract class GetterElementZ extends DeserializedElementZ
1444 with AnalyzableElementMixin, 1403 with
1445 AstElementMixin, 1404 AnalyzableElementMixin,
1446 FunctionTypedElementMixin, 1405 AstElementMixin,
1447 ParametersMixin, 1406 FunctionTypedElementMixin,
1448 TypedElementMixin, 1407 ParametersMixin,
1449 MemberElementMixin 1408 TypedElementMixin,
1409 MemberElementMixin
1450 implements GetterElement { 1410 implements GetterElement {
1451
1452 AbstractFieldElement abstractField; 1411 AbstractFieldElement abstractField;
1453 SetterElement setter; 1412 SetterElement setter;
1454 1413
1455 GetterElementZ(ObjectDecoder decoder) 1414 GetterElementZ(ObjectDecoder decoder) : super(decoder);
1456 : super(decoder);
1457 1415
1458 @override 1416 @override
1459 ElementKind get kind => ElementKind.GETTER; 1417 ElementKind get kind => ElementKind.GETTER;
1460 1418
1461 @override 1419 @override
1462 accept(ElementVisitor visitor, arg) { 1420 accept(ElementVisitor visitor, arg) {
1463 return visitor.visitGetterElement(this, arg); 1421 return visitor.visitGetterElement(this, arg);
1464 } 1422 }
1465 } 1423 }
1466 1424
1467 class TopLevelGetterElementZ extends GetterElementZ with LibraryMemberMixin { 1425 class TopLevelGetterElementZ extends GetterElementZ with LibraryMemberMixin {
1468 TopLevelGetterElementZ(ObjectDecoder decoder) 1426 TopLevelGetterElementZ(ObjectDecoder decoder) : super(decoder);
1469 : super(decoder);
1470 } 1427 }
1471 1428
1472 class StaticGetterElementZ extends GetterElementZ 1429 class StaticGetterElementZ extends GetterElementZ
1473 with ClassMemberMixin, StaticMemberMixin { 1430 with ClassMemberMixin, StaticMemberMixin {
1474 StaticGetterElementZ(ObjectDecoder decoder) 1431 StaticGetterElementZ(ObjectDecoder decoder) : super(decoder);
1475 : super(decoder);
1476 } 1432 }
1477 1433
1478 class InstanceGetterElementZ extends GetterElementZ 1434 class InstanceGetterElementZ extends GetterElementZ
1479 with ClassMemberMixin, InstanceMemberMixin { 1435 with ClassMemberMixin, InstanceMemberMixin {
1480 InstanceGetterElementZ(ObjectDecoder decoder) 1436 InstanceGetterElementZ(ObjectDecoder decoder) : super(decoder);
1481 : super(decoder);
1482 } 1437 }
1483 1438
1484 abstract class SetterElementZ extends DeserializedElementZ 1439 abstract class SetterElementZ extends DeserializedElementZ
1485 with AnalyzableElementMixin, 1440 with
1486 AstElementMixin, 1441 AnalyzableElementMixin,
1487 FunctionTypedElementMixin, 1442 AstElementMixin,
1488 ParametersMixin, 1443 FunctionTypedElementMixin,
1489 TypedElementMixin, 1444 ParametersMixin,
1490 MemberElementMixin 1445 TypedElementMixin,
1446 MemberElementMixin
1491 implements SetterElement { 1447 implements SetterElement {
1492
1493 AbstractFieldElement abstractField; 1448 AbstractFieldElement abstractField;
1494 GetterElement getter; 1449 GetterElement getter;
1495 1450
1496 SetterElementZ(ObjectDecoder decoder) 1451 SetterElementZ(ObjectDecoder decoder) : super(decoder);
1497 : super(decoder);
1498 1452
1499 @override 1453 @override
1500 ElementKind get kind => ElementKind.SETTER; 1454 ElementKind get kind => ElementKind.SETTER;
1501 1455
1502 @override 1456 @override
1503 accept(ElementVisitor visitor, arg) { 1457 accept(ElementVisitor visitor, arg) {
1504 return visitor.visitSetterElement(this, arg); 1458 return visitor.visitSetterElement(this, arg);
1505 } 1459 }
1506 } 1460 }
1507 1461
1508 class TopLevelSetterElementZ extends SetterElementZ with LibraryMemberMixin { 1462 class TopLevelSetterElementZ extends SetterElementZ with LibraryMemberMixin {
1509 TopLevelSetterElementZ(ObjectDecoder decoder) 1463 TopLevelSetterElementZ(ObjectDecoder decoder) : super(decoder);
1510 : super(decoder);
1511 } 1464 }
1512 1465
1513 class StaticSetterElementZ extends SetterElementZ 1466 class StaticSetterElementZ extends SetterElementZ
1514 with ClassMemberMixin, StaticMemberMixin { 1467 with ClassMemberMixin, StaticMemberMixin {
1515 StaticSetterElementZ(ObjectDecoder decoder) 1468 StaticSetterElementZ(ObjectDecoder decoder) : super(decoder);
1516 : super(decoder);
1517 } 1469 }
1518 1470
1519 class InstanceSetterElementZ extends SetterElementZ 1471 class InstanceSetterElementZ extends SetterElementZ
1520 with ClassMemberMixin, InstanceMemberMixin { 1472 with ClassMemberMixin, InstanceMemberMixin {
1521 InstanceSetterElementZ(ObjectDecoder decoder) 1473 InstanceSetterElementZ(ObjectDecoder decoder) : super(decoder);
1522 : super(decoder);
1523 } 1474 }
1524 1475
1525 abstract class TypeDeclarationMixin<T extends GenericType> 1476 abstract class TypeDeclarationMixin<T extends GenericType>
1526 implements ElementZ, TypeDeclarationElement { 1477 implements ElementZ, TypeDeclarationElement {
1527 List<DartType> _typeVariables; 1478 List<DartType> _typeVariables;
1528 T _rawType; 1479 T _rawType;
1529 T _thisType; 1480 T _thisType;
1530 Name _memberName; 1481 Name _memberName;
1531 1482
1532 Name get memberName { 1483 Name get memberName {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1568 } 1519 }
1569 1520
1570 @override 1521 @override
1571 T computeType(Resolution resolution) => thisType; 1522 T computeType(Resolution resolution) => thisType;
1572 1523
1573 @override 1524 @override
1574 bool get isResolved => true; 1525 bool get isResolved => true;
1575 } 1526 }
1576 1527
1577 class TypedefElementZ extends DeserializedElementZ 1528 class TypedefElementZ extends DeserializedElementZ
1578 with AnalyzableElementMixin, 1529 with
1579 AstElementMixin, 1530 AnalyzableElementMixin,
1580 LibraryMemberMixin, 1531 AstElementMixin,
1581 ParametersMixin, 1532 LibraryMemberMixin,
1582 TypeDeclarationMixin<TypedefType> 1533 ParametersMixin,
1534 TypeDeclarationMixin<TypedefType>
1583 implements TypedefElement { 1535 implements TypedefElement {
1584 DartType _alias; 1536 DartType _alias;
1585 1537
1586 TypedefElementZ(ObjectDecoder decoder) 1538 TypedefElementZ(ObjectDecoder decoder) : super(decoder);
1587 : super(decoder);
1588 1539
1589 TypedefType _createType(List<DartType> typeArguments) { 1540 TypedefType _createType(List<DartType> typeArguments) {
1590 return new TypedefType(this, typeArguments); 1541 return new TypedefType(this, typeArguments);
1591 } 1542 }
1592 1543
1593 @override 1544 @override
1594 List<DartType> _getTypeVariables() { 1545 List<DartType> _getTypeVariables() {
1595 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true); 1546 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true);
1596 } 1547 }
1597 1548
(...skipping 14 matching lines...) Expand all
1612 } 1563 }
1613 1564
1614 @override 1565 @override
1615 void ensureResolved(Resolution resolution) {} 1566 void ensureResolved(Resolution resolution) {}
1616 1567
1617 @override 1568 @override
1618 void checkCyclicReference(Resolution resolution) {} 1569 void checkCyclicReference(Resolution resolution) {}
1619 } 1570 }
1620 1571
1621 class TypeVariableElementZ extends DeserializedElementZ 1572 class TypeVariableElementZ extends DeserializedElementZ
1622 with AnalyzableElementMixin, 1573 with AnalyzableElementMixin, AstElementMixin, TypedElementMixin
1623 AstElementMixin,
1624 TypedElementMixin
1625 implements TypeVariableElement { 1574 implements TypeVariableElement {
1626 TypeDeclarationElement _typeDeclaration; 1575 TypeDeclarationElement _typeDeclaration;
1627 TypeVariableType _type; 1576 TypeVariableType _type;
1628 DartType _bound; 1577 DartType _bound;
1629 Name _memberName; 1578 Name _memberName;
1630 1579
1631 TypeVariableElementZ(ObjectDecoder decoder) 1580 TypeVariableElementZ(ObjectDecoder decoder) : super(decoder);
1632 : super(decoder);
1633 1581
1634 Name get memberName { 1582 Name get memberName {
1635 if (_memberName == null) { 1583 if (_memberName == null) {
1636 _memberName = new Name(name, library); 1584 _memberName = new Name(name, library);
1637 } 1585 }
1638 return _memberName; 1586 return _memberName;
1639 } 1587 }
1640 1588
1641 @override 1589 @override
1642 ElementKind get kind => ElementKind.TYPE_VARIABLE; 1590 ElementKind get kind => ElementKind.TYPE_VARIABLE;
(...skipping 13 matching lines...) Expand all
1656 1604
1657 @override 1605 @override
1658 Element get enclosingClass => typeDeclaration; 1606 Element get enclosingClass => typeDeclaration;
1659 1607
1660 @override 1608 @override
1661 int get index => _decoder.getInt(Key.INDEX); 1609 int get index => _decoder.getInt(Key.INDEX);
1662 1610
1663 @override 1611 @override
1664 TypeDeclarationElement get typeDeclaration { 1612 TypeDeclarationElement get typeDeclaration {
1665 if (_typeDeclaration == null) { 1613 if (_typeDeclaration == null) {
1666 _typeDeclaration = 1614 _typeDeclaration = _decoder.getElement(Key.TYPE_DECLARATION);
1667 _decoder.getElement(Key.TYPE_DECLARATION);
1668 } 1615 }
1669 return _typeDeclaration; 1616 return _typeDeclaration;
1670 } 1617 }
1671 1618
1672 DartType get bound { 1619 DartType get bound {
1673 if (_bound == null) { 1620 if (_bound == null) {
1674 _bound = _decoder.getType(Key.BOUND); 1621 _bound = _decoder.getType(Key.BOUND);
1675 } 1622 }
1676 return _bound; 1623 return _bound;
1677 } 1624 }
1678 1625
1679 @override 1626 @override
1680 LibraryElement get library => typeDeclaration.library; 1627 LibraryElement get library => typeDeclaration.library;
1681 } 1628 }
1682 1629
1683 class SyntheticTypeVariableElementZ extends ElementZ 1630 class SyntheticTypeVariableElementZ extends ElementZ
1684 with AnalyzableElementMixin, 1631 with AnalyzableElementMixin, AstElementMixin
1685 AstElementMixin
1686 implements TypeVariableElement { 1632 implements TypeVariableElement {
1687 final TypeDeclarationElement typeDeclaration; 1633 final TypeDeclarationElement typeDeclaration;
1688 final int index; 1634 final int index;
1689 final String name; 1635 final String name;
1690 TypeVariableType _type; 1636 TypeVariableType _type;
1691 DartType _bound; 1637 DartType _bound;
1692 Name _memberName; 1638 Name _memberName;
1693 1639
1694 SyntheticTypeVariableElementZ(this.typeDeclaration, this.index, this.name); 1640 SyntheticTypeVariableElementZ(this.typeDeclaration, this.index, this.name);
1695 1641
(...skipping 13 matching lines...) Expand all
1709 } 1655 }
1710 1656
1711 @override 1657 @override
1712 CompilationUnitElement get compilationUnit { 1658 CompilationUnitElement get compilationUnit {
1713 return typeDeclaration.compilationUnit; 1659 return typeDeclaration.compilationUnit;
1714 } 1660 }
1715 1661
1716 @override 1662 @override
1717 TypeVariableType get type { 1663 TypeVariableType get type {
1718 assert(invariant(this, _type != null, 1664 assert(invariant(this, _type != null,
1719 message: "Type variable type has not been set on $this.")); 1665 message: "Type variable type has not been set on $this."));
1720 return _type; 1666 return _type;
1721 } 1667 }
1722 1668
1723 @override 1669 @override
1724 TypeVariableType computeType(Resolution resolution) => type; 1670 TypeVariableType computeType(Resolution resolution) => type;
1725 1671
1726 @override 1672 @override
1727 Element get enclosingElement => typeDeclaration; 1673 Element get enclosingElement => typeDeclaration;
1728 1674
1729 @override 1675 @override
1730 Element get enclosingClass => typeDeclaration; 1676 Element get enclosingClass => typeDeclaration;
1731 1677
1732 DartType get bound { 1678 DartType get bound {
1733 assert(invariant(this, _bound != null, 1679 assert(invariant(this, _bound != null,
1734 message: "Type variable bound has not been set on $this.")); 1680 message: "Type variable bound has not been set on $this."));
1735 return _bound; 1681 return _bound;
1736 } 1682 }
1737 1683
1738 @override 1684 @override
1739 LibraryElement get library => typeDeclaration.library; 1685 LibraryElement get library => typeDeclaration.library;
1740 1686
1741 @override 1687 @override
1742 SourceSpan get sourcePosition => typeDeclaration.sourcePosition; 1688 SourceSpan get sourcePosition => typeDeclaration.sourcePosition;
1743 } 1689 }
1744 1690
1745 class ParameterElementZ extends DeserializedElementZ 1691 class ParameterElementZ extends DeserializedElementZ
1746 with AnalyzableElementMixin, 1692 with AnalyzableElementMixin, AstElementMixin, TypedElementMixin
1747 AstElementMixin,
1748 TypedElementMixin
1749 implements ParameterElement { 1693 implements ParameterElement {
1750 FunctionElement _functionDeclaration; 1694 FunctionElement _functionDeclaration;
1751 ConstantExpression _constant; 1695 ConstantExpression _constant;
1752 DartType _type; 1696 DartType _type;
1753 1697
1754 ParameterElementZ(ObjectDecoder decoder) : super(decoder); 1698 ParameterElementZ(ObjectDecoder decoder) : super(decoder);
1755 1699
1756 @override 1700 @override
1757 accept(ElementVisitor visitor, arg) { 1701 accept(ElementVisitor visitor, arg) {
1758 return visitor.visitParameterElement(this, arg); 1702 return visitor.visitParameterElement(this, arg);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1807 LibraryElement get library => executableContext.library; 1751 LibraryElement get library => executableContext.library;
1808 1752
1809 @override 1753 @override
1810 MemberElement get memberContext => executableContext.memberContext; 1754 MemberElement get memberContext => executableContext.memberContext;
1811 } 1755 }
1812 1756
1813 class InitializingFormalElementZ extends ParameterElementZ 1757 class InitializingFormalElementZ extends ParameterElementZ
1814 implements InitializingFormalElement { 1758 implements InitializingFormalElement {
1815 FieldElement _fieldElement; 1759 FieldElement _fieldElement;
1816 1760
1817 InitializingFormalElementZ(ObjectDecoder decoder) 1761 InitializingFormalElementZ(ObjectDecoder decoder) : super(decoder);
1818 : super(decoder);
1819 1762
1820 @override 1763 @override
1821 FieldElement get fieldElement { 1764 FieldElement get fieldElement {
1822 if (_fieldElement == null) { 1765 if (_fieldElement == null) {
1823 _fieldElement = _decoder.getElement(Key.FIELD); 1766 _fieldElement = _decoder.getElement(Key.FIELD);
1824 } 1767 }
1825 return _fieldElement; 1768 return _fieldElement;
1826 } 1769 }
1827 1770
1828 @override 1771 @override
1829 accept(ElementVisitor visitor, arg) { 1772 accept(ElementVisitor visitor, arg) {
1830 return visitor.visitFieldParameterElement(this, arg); 1773 return visitor.visitFieldParameterElement(this, arg);
1831 } 1774 }
1832 1775
1833 @override 1776 @override
1834 ElementKind get kind => ElementKind.INITIALIZING_FORMAL; 1777 ElementKind get kind => ElementKind.INITIALIZING_FORMAL;
1835 } 1778 }
1836 1779
1837 class ImportElementZ extends DeserializedElementZ 1780 class ImportElementZ extends DeserializedElementZ
1838 with LibraryMemberMixin implements ImportElement { 1781 with LibraryMemberMixin
1782 implements ImportElement {
1839 bool _isDeferred; 1783 bool _isDeferred;
1840 PrefixElement _prefix; 1784 PrefixElement _prefix;
1841 LibraryElement _importedLibrary; 1785 LibraryElement _importedLibrary;
1842 Uri _uri; 1786 Uri _uri;
1843 1787
1844 ImportElementZ(ObjectDecoder decoder) 1788 ImportElementZ(ObjectDecoder decoder) : super(decoder);
1845 : super(decoder);
1846 1789
1847 @override 1790 @override
1848 String get name => ''; 1791 String get name => '';
1849 1792
1850 @override 1793 @override
1851 accept(ElementVisitor visitor, arg) => visitor.visitImportElement(this, arg); 1794 accept(ElementVisitor visitor, arg) => visitor.visitImportElement(this, arg);
1852 1795
1853 @override 1796 @override
1854 ElementKind get kind => ElementKind.IMPORT; 1797 ElementKind get kind => ElementKind.IMPORT;
1855 1798
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1888 return _uri; 1831 return _uri;
1889 } 1832 }
1890 1833
1891 @override 1834 @override
1892 Import get node => _unsupported('node'); 1835 Import get node => _unsupported('node');
1893 1836
1894 String toString() => 'Z$kind($uri)'; 1837 String toString() => 'Z$kind($uri)';
1895 } 1838 }
1896 1839
1897 class ExportElementZ extends DeserializedElementZ 1840 class ExportElementZ extends DeserializedElementZ
1898 with LibraryMemberMixin implements ExportElement { 1841 with LibraryMemberMixin
1842 implements ExportElement {
1899 LibraryElement _exportedLibrary; 1843 LibraryElement _exportedLibrary;
1900 Uri _uri; 1844 Uri _uri;
1901 1845
1902 ExportElementZ(ObjectDecoder decoder) 1846 ExportElementZ(ObjectDecoder decoder) : super(decoder);
1903 : super(decoder);
1904 1847
1905 @override 1848 @override
1906 String get name => ''; 1849 String get name => '';
1907 1850
1908 @override 1851 @override
1909 accept(ElementVisitor visitor, arg) => visitor.visitExportElement(this, arg); 1852 accept(ElementVisitor visitor, arg) => visitor.visitExportElement(this, arg);
1910 1853
1911 @override 1854 @override
1912 ElementKind get kind => ElementKind.EXPORT; 1855 ElementKind get kind => ElementKind.EXPORT;
1913 1856
(...skipping 13 matching lines...) Expand all
1927 return _uri; 1870 return _uri;
1928 } 1871 }
1929 1872
1930 @override 1873 @override
1931 Export get node => _unsupported('node'); 1874 Export get node => _unsupported('node');
1932 1875
1933 String toString() => 'Z$kind($uri)'; 1876 String toString() => 'Z$kind($uri)';
1934 } 1877 }
1935 1878
1936 class PrefixElementZ extends DeserializedElementZ 1879 class PrefixElementZ extends DeserializedElementZ
1937 with LibraryMemberMixin implements PrefixElement { 1880 with LibraryMemberMixin
1881 implements PrefixElement {
1938 bool _isDeferred; 1882 bool _isDeferred;
1939 ImportElement _deferredImport; 1883 ImportElement _deferredImport;
1940 1884
1941 PrefixElementZ(ObjectDecoder decoder) 1885 PrefixElementZ(ObjectDecoder decoder) : super(decoder);
1942 : super(decoder);
1943 1886
1944 @override 1887 @override
1945 accept(ElementVisitor visitor, arg) => visitor.visitPrefixElement(this, arg); 1888 accept(ElementVisitor visitor, arg) => visitor.visitPrefixElement(this, arg);
1946 1889
1947 void _ensureDeferred() { 1890 void _ensureDeferred() {
1948 if (_isDeferred == null) { 1891 if (_isDeferred == null) {
1949 _isDeferred = _decoder.getBool(Key.IS_DEFERRED); 1892 _isDeferred = _decoder.getBool(Key.IS_DEFERRED);
1950 _deferredImport = _decoder.getElement(Key.IMPORT, isOptional: true); 1893 _deferredImport = _decoder.getElement(Key.IMPORT, isOptional: true);
1951 } 1894 }
1952 } 1895 }
(...skipping 11 matching lines...) Expand all
1964 } 1907 }
1965 1908
1966 @override 1909 @override
1967 ElementKind get kind => ElementKind.PREFIX; 1910 ElementKind get kind => ElementKind.PREFIX;
1968 1911
1969 @override 1912 @override
1970 Element lookupLocalMember(String memberName) { 1913 Element lookupLocalMember(String memberName) {
1971 return _unsupported('lookupLocalMember'); 1914 return _unsupported('lookupLocalMember');
1972 } 1915 }
1973 } 1916 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/serialization/json_serializer.dart ('k') | pkg/compiler/lib/src/serialization/serialization.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698