OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |