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

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

Issue 2603263002: Prefix resolution_types with Resolution. (Closed)
Patch Set: Rebased Created 3 years, 11 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;
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 bool get isTopLevel => false; 755 bool get isTopLevel => false;
756 756
757 @override 757 @override
758 bool get isStatic => true; 758 bool get isStatic => true;
759 759
760 @override 760 @override
761 bool get isClassMember => true; 761 bool get isClassMember => true;
762 } 762 }
763 763
764 abstract class TypedElementMixin implements DeserializedElementZ, TypedElement { 764 abstract class TypedElementMixin implements DeserializedElementZ, TypedElement {
765 DartType _type; 765 ResolutionDartType _type;
766 766
767 @override 767 @override
768 DartType get type { 768 ResolutionDartType get type {
769 if (_type == null) { 769 if (_type == null) {
770 _type = _decoder.getType(Key.TYPE); 770 _type = _decoder.getType(Key.TYPE);
771 } 771 }
772 return _type; 772 return _type;
773 } 773 }
774 774
775 @override 775 @override
776 DartType computeType(Resolution resolution) => type; 776 ResolutionDartType computeType(Resolution resolution) => type;
777 } 777 }
778 778
779 abstract class ParametersMixin 779 abstract class ParametersMixin
780 implements DeserializedElementZ, FunctionTypedElement { 780 implements DeserializedElementZ, FunctionTypedElement {
781 FunctionSignature _functionSignature; 781 FunctionSignature _functionSignature;
782 List<ParameterElement> _parameters; 782 List<ParameterElement> _parameters;
783 783
784 bool get hasFunctionSignature => true; 784 bool get hasFunctionSignature => true;
785 785
786 @override 786 @override
787 FunctionSignature get functionSignature { 787 FunctionSignature get functionSignature {
788 if (_functionSignature == null) { 788 if (_functionSignature == null) {
789 List<Element> requiredParameters = []; 789 List<Element> requiredParameters = [];
790 List<Element> optionalParameters = []; 790 List<Element> optionalParameters = [];
791 List orderedOptionalParameters = []; 791 List orderedOptionalParameters = [];
792 int requiredParameterCount = 0; 792 int requiredParameterCount = 0;
793 int optionalParameterCount = 0; 793 int optionalParameterCount = 0;
794 bool optionalParametersAreNamed = false; 794 bool optionalParametersAreNamed = false;
795 List<DartType> parameterTypes = <DartType>[]; 795 List<ResolutionDartType> parameterTypes = <ResolutionDartType>[];
796 List<DartType> optionalParameterTypes = <DartType>[]; 796 List<ResolutionDartType> optionalParameterTypes = <ResolutionDartType>[];
797 for (ParameterElement parameter in parameters) { 797 for (ParameterElement parameter in parameters) {
798 if (parameter.isOptional) { 798 if (parameter.isOptional) {
799 optionalParameterCount++; 799 optionalParameterCount++;
800 optionalParameters.add(parameter); 800 optionalParameters.add(parameter);
801 orderedOptionalParameters.add(parameter); 801 orderedOptionalParameters.add(parameter);
802 if (parameter.isNamed) { 802 if (parameter.isNamed) {
803 optionalParametersAreNamed = true; 803 optionalParametersAreNamed = true;
804 } else { 804 } else {
805 optionalParameterTypes.add(parameter.type); 805 optionalParameterTypes.add(parameter.type);
806 } 806 }
807 } else { 807 } else {
808 requiredParameterCount++; 808 requiredParameterCount++;
809 requiredParameters.add(parameter); 809 requiredParameters.add(parameter);
810 parameterTypes.add(parameter.type); 810 parameterTypes.add(parameter.type);
811 } 811 }
812 } 812 }
813 List<String> namedParameters = const <String>[]; 813 List<String> namedParameters = const <String>[];
814 List<DartType> namedParameterTypes = const <DartType>[]; 814 List<ResolutionDartType> namedParameterTypes =
815 const <ResolutionDartType>[];
815 if (optionalParametersAreNamed) { 816 if (optionalParametersAreNamed) {
816 namedParameters = <String>[]; 817 namedParameters = <String>[];
817 namedParameterTypes = <DartType>[]; 818 namedParameterTypes = <ResolutionDartType>[];
818 orderedOptionalParameters.sort((Element a, Element b) { 819 orderedOptionalParameters.sort((Element a, Element b) {
819 return a.name.compareTo(b.name); 820 return a.name.compareTo(b.name);
820 }); 821 });
821 for (ParameterElement parameter in orderedOptionalParameters) { 822 for (ParameterElement parameter in orderedOptionalParameters) {
822 namedParameters.add(parameter.name); 823 namedParameters.add(parameter.name);
823 namedParameterTypes.add(parameter.type); 824 namedParameterTypes.add(parameter.type);
824 } 825 }
825 } 826 }
826 List<DartType> typeVariables = 827 List<ResolutionDartType> typeVariables =
827 _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true); 828 _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true);
828 829
829 FunctionType type = new FunctionType( 830 ResolutionFunctionType type = new ResolutionFunctionType(
830 this, 831 this,
831 _decoder.getType(Key.RETURN_TYPE), 832 _decoder.getType(Key.RETURN_TYPE),
832 parameterTypes, 833 parameterTypes,
833 optionalParameterTypes, 834 optionalParameterTypes,
834 namedParameters, 835 namedParameters,
835 namedParameterTypes); 836 namedParameterTypes);
836 _functionSignature = new FunctionSignatureX( 837 _functionSignature = new FunctionSignatureX(
837 typeVariables: typeVariables, 838 typeVariables: typeVariables,
838 requiredParameters: requiredParameters, 839 requiredParameters: requiredParameters,
839 requiredParameterCount: requiredParameterCount, 840 requiredParameterCount: requiredParameterCount,
(...skipping 19 matching lines...) Expand all
859 @override 860 @override
860 FunctionElement asFunctionElement() => this; 861 FunctionElement asFunctionElement() => this;
861 862
862 @override 863 @override
863 bool get isExternal { 864 bool get isExternal {
864 return _decoder.getBool(Key.IS_EXTERNAL, 865 return _decoder.getBool(Key.IS_EXTERNAL,
865 isOptional: true, defaultValue: false); 866 isOptional: true, defaultValue: false);
866 } 867 }
867 868
868 @override 869 @override
869 List<DartType> get typeVariables => functionSignature.typeVariables; 870 List<ResolutionDartType> get typeVariables => functionSignature.typeVariables;
870 } 871 }
871 872
872 abstract class ClassElementMixin 873 abstract class ClassElementMixin
873 implements ElementZ, ClassElement, class_members.ClassMemberMixin { 874 implements ElementZ, ClassElement, class_members.ClassMemberMixin {
874 bool _isResolved = false; 875 bool _isResolved = false;
875 876
876 InterfaceType _createType(List<DartType> typeArguments) { 877 ResolutionInterfaceType _createType(List<ResolutionDartType> typeArguments) {
877 return new InterfaceType(this, typeArguments); 878 return new ResolutionInterfaceType(this, typeArguments);
878 } 879 }
879 880
880 @override 881 @override
881 ElementKind get kind => ElementKind.CLASS; 882 ElementKind get kind => ElementKind.CLASS;
882 883
883 @override 884 @override
884 bool get hasConstructor => _unsupported('hasConstructor'); 885 bool get hasConstructor => _unsupported('hasConstructor');
885 886
886 @override 887 @override
887 bool get hasIncompleteHierarchy => _unsupported('hasIncompleteHierarchy'); 888 bool get hasIncompleteHierarchy => _unsupported('hasIncompleteHierarchy');
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 } 920 }
920 921
921 class ClassElementZ extends DeserializedElementZ 922 class ClassElementZ extends DeserializedElementZ
922 with 923 with
923 AnalyzableElementMixin, 924 AnalyzableElementMixin,
924 AstElementMixinZ, 925 AstElementMixinZ,
925 ClassElementCommon, 926 ClassElementCommon,
926 class_members.ClassMemberMixin, 927 class_members.ClassMemberMixin,
927 ContainerMixin, 928 ContainerMixin,
928 LibraryMemberMixin, 929 LibraryMemberMixin,
929 TypeDeclarationMixin<InterfaceType>, 930 TypeDeclarationMixin<ResolutionInterfaceType>,
930 ClassElementMixin 931 ClassElementMixin
931 implements ClassElement { 932 implements ClassElement {
932 bool _isObject; 933 bool _isObject;
933 DartType _supertype; 934 ResolutionDartType _supertype;
934 OrderedTypeSet _allSupertypesAndSelf; 935 OrderedTypeSet _allSupertypesAndSelf;
935 Link<DartType> _interfaces; 936 Link<ResolutionDartType> _interfaces;
936 FunctionType _callType; 937 ResolutionFunctionType _callType;
937 938
938 ClassElementZ(ObjectDecoder decoder) : super(decoder); 939 ClassElementZ(ObjectDecoder decoder) : super(decoder);
939 940
940 @override 941 @override
941 List<DartType> _getTypeVariables() { 942 List<ResolutionDartType> _getTypeVariables() {
942 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true); 943 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true);
943 } 944 }
944 945
945 void _ensureSuperHierarchy() { 946 void _ensureSuperHierarchy() {
946 if (_interfaces == null) { 947 if (_interfaces == null) {
947 InterfaceType supertype = 948 ResolutionInterfaceType supertype =
948 _decoder.getType(Key.SUPERTYPE, isOptional: true); 949 _decoder.getType(Key.SUPERTYPE, isOptional: true);
949 if (supertype == null) { 950 if (supertype == null) {
950 _isObject = true; 951 _isObject = true;
951 _allSupertypesAndSelf = new OrderedTypeSet.singleton(thisType); 952 _allSupertypesAndSelf = new OrderedTypeSet.singleton(thisType);
952 _interfaces = const Link<DartType>(); 953 _interfaces = const Link<ResolutionDartType>();
953 } else { 954 } else {
954 _isObject = false; 955 _isObject = false;
955 _interfaces = 956 _interfaces =
956 toLink(_decoder.getTypes(Key.INTERFACES, isOptional: true)); 957 toLink(_decoder.getTypes(Key.INTERFACES, isOptional: true));
957 List<InterfaceType> mixins = 958 List<ResolutionInterfaceType> mixins =
958 _decoder.getTypes(Key.MIXINS, isOptional: true); 959 _decoder.getTypes(Key.MIXINS, isOptional: true);
959 for (InterfaceType mixin in mixins) { 960 for (ResolutionInterfaceType mixin in mixins) {
960 MixinApplicationElement mixinElement = 961 MixinApplicationElement mixinElement =
961 new UnnamedMixinApplicationElementZ(this, supertype, mixin); 962 new UnnamedMixinApplicationElementZ(this, supertype, mixin);
962 supertype = mixinElement.thisType 963 supertype = mixinElement.thisType
963 .subst(typeVariables, mixinElement.typeVariables); 964 .subst(typeVariables, mixinElement.typeVariables);
964 } 965 }
965 _supertype = supertype; 966 _supertype = supertype;
966 _allSupertypesAndSelf = new OrderedTypeSetBuilder(this) 967 _allSupertypesAndSelf = new OrderedTypeSetBuilder(this)
967 .createOrderedTypeSet(_supertype, _interfaces); 968 .createOrderedTypeSet(_supertype, _interfaces);
968 _callType = _decoder.getType(Key.CALL_TYPE, isOptional: true); 969 _callType = _decoder.getType(Key.CALL_TYPE, isOptional: true);
969 } 970 }
970 } 971 }
971 } 972 }
972 973
973 @override 974 @override
974 accept(ElementVisitor visitor, arg) { 975 accept(ElementVisitor visitor, arg) {
975 return visitor.visitClassElement(this, arg); 976 return visitor.visitClassElement(this, arg);
976 } 977 }
977 978
978 @override 979 @override
979 DartType get supertype { 980 ResolutionDartType get supertype {
980 _ensureSuperHierarchy(); 981 _ensureSuperHierarchy();
981 return _supertype; 982 return _supertype;
982 } 983 }
983 984
984 @override 985 @override
985 bool get isAbstract => _decoder.getBool(Key.IS_ABSTRACT); 986 bool get isAbstract => _decoder.getBool(Key.IS_ABSTRACT);
986 987
987 @override 988 @override
988 bool get isObject { 989 bool get isObject {
989 _ensureSuperHierarchy(); 990 _ensureSuperHierarchy();
990 return _isObject; 991 return _isObject;
991 } 992 }
992 993
993 @override 994 @override
994 OrderedTypeSet get allSupertypesAndSelf { 995 OrderedTypeSet get allSupertypesAndSelf {
995 _ensureSuperHierarchy(); 996 _ensureSuperHierarchy();
996 return _allSupertypesAndSelf; 997 return _allSupertypesAndSelf;
997 } 998 }
998 999
999 @override 1000 @override
1000 Link<DartType> get interfaces { 1001 Link<ResolutionDartType> get interfaces {
1001 _ensureSuperHierarchy(); 1002 _ensureSuperHierarchy();
1002 return _interfaces; 1003 return _interfaces;
1003 } 1004 }
1004 1005
1005 @override 1006 @override
1006 bool get isProxy => _decoder.getBool(Key.IS_PROXY); 1007 bool get isProxy => _decoder.getBool(Key.IS_PROXY);
1007 1008
1008 @override 1009 @override
1009 bool get isInjected => _decoder.getBool(Key.IS_INJECTED); 1010 bool get isInjected => _decoder.getBool(Key.IS_INJECTED);
1010 1011
1011 @override 1012 @override
1012 bool get isUnnamedMixinApplication => false; 1013 bool get isUnnamedMixinApplication => false;
1013 1014
1014 @override 1015 @override
1015 FunctionType get callType { 1016 ResolutionFunctionType get callType {
1016 _ensureSuperHierarchy(); 1017 _ensureSuperHierarchy();
1017 // TODO(johnniwinther): Why can't this always be computed in ensureResolved? 1018 // TODO(johnniwinther): Why can't this always be computed in ensureResolved?
1018 return _callType; 1019 return _callType;
1019 } 1020 }
1020 } 1021 }
1021 1022
1022 abstract class MixinApplicationElementMixin 1023 abstract class MixinApplicationElementMixin
1023 implements ElementZ, MixinApplicationElement { 1024 implements ElementZ, MixinApplicationElement {
1024 @override 1025 @override
1025 bool get isMixinApplication => true; 1026 bool get isMixinApplication => true;
1026 1027
1027 @override 1028 @override
1028 ClassElement get mixin => mixinType.element; 1029 ClassElement get mixin => mixinType.element;
1029 } 1030 }
1030 1031
1031 class NamedMixinApplicationElementZ extends ClassElementZ 1032 class NamedMixinApplicationElementZ extends ClassElementZ
1032 with MixinApplicationElementMixin { 1033 with MixinApplicationElementMixin {
1033 Link<Element> _constructors; 1034 Link<Element> _constructors;
1034 InterfaceType _mixinType; 1035 ResolutionInterfaceType _mixinType;
1035 1036
1036 NamedMixinApplicationElementZ(ObjectDecoder decoder) : super(decoder); 1037 NamedMixinApplicationElementZ(ObjectDecoder decoder) : super(decoder);
1037 1038
1038 @override 1039 @override
1039 InterfaceType get mixinType => _mixinType ??= _decoder.getType(Key.MIXIN); 1040 ResolutionInterfaceType get mixinType =>
1041 _mixinType ??= _decoder.getType(Key.MIXIN);
1040 1042
1041 @override 1043 @override
1042 ClassElement get subclass => null; 1044 ClassElement get subclass => null;
1043 } 1045 }
1044 1046
1045 class UnnamedMixinApplicationElementZ extends ElementZ 1047 class UnnamedMixinApplicationElementZ extends ElementZ
1046 with 1048 with
1047 ClassElementCommon, 1049 ClassElementCommon,
1048 ClassElementMixin, 1050 ClassElementMixin,
1049 class_members.ClassMemberMixin, 1051 class_members.ClassMemberMixin,
1050 TypeDeclarationMixin<InterfaceType>, 1052 TypeDeclarationMixin<ResolutionInterfaceType>,
1051 AnalyzableElementMixin, 1053 AnalyzableElementMixin,
1052 AstElementMixinZ, 1054 AstElementMixinZ,
1053 MixinApplicationElementCommon, 1055 MixinApplicationElementCommon,
1054 MixinApplicationElementMixin { 1056 MixinApplicationElementMixin {
1055 final String name; 1057 final String name;
1056 final ClassElement subclass; 1058 final ClassElement subclass;
1057 final InterfaceType _supertypeBase; 1059 final ResolutionInterfaceType _supertypeBase;
1058 final InterfaceType _mixinBase; 1060 final ResolutionInterfaceType _mixinBase;
1059 InterfaceType _supertype; 1061 ResolutionInterfaceType _supertype;
1060 Link<DartType> _interfaces; 1062 Link<ResolutionDartType> _interfaces;
1061 OrderedTypeSet _allSupertypesAndSelf; 1063 OrderedTypeSet _allSupertypesAndSelf;
1062 Link<ConstructorElement> _constructors; 1064 Link<ConstructorElement> _constructors;
1063 1065
1064 UnnamedMixinApplicationElementZ( 1066 UnnamedMixinApplicationElementZ(this.subclass,
1065 this.subclass, InterfaceType supertype, InterfaceType mixin) 1067 ResolutionInterfaceType supertype, ResolutionInterfaceType mixin)
1066 : this._supertypeBase = supertype, 1068 : this._supertypeBase = supertype,
1067 this._mixinBase = mixin, 1069 this._mixinBase = mixin,
1068 this.name = "${supertype.name}+${mixin.name}"; 1070 this.name = "${supertype.name}+${mixin.name}";
1069 1071
1070 @override 1072 @override
1071 CompilationUnitElement get compilationUnit => subclass.compilationUnit; 1073 CompilationUnitElement get compilationUnit => subclass.compilationUnit;
1072 1074
1073 @override 1075 @override
1074 bool get isTopLevel => true; 1076 bool get isTopLevel => true;
1075 1077
(...skipping 16 matching lines...) Expand all
1092 constructor, ResolvedAstKind.FORWARDING_CONSTRUCTOR); 1094 constructor, ResolvedAstKind.FORWARDING_CONSTRUCTOR);
1093 builder.addLast(constructor); 1095 builder.addLast(constructor);
1094 } 1096 }
1095 } 1097 }
1096 _constructors = builder.toLink(); 1098 _constructors = builder.toLink();
1097 } 1099 }
1098 return _constructors; 1100 return _constructors;
1099 } 1101 }
1100 1102
1101 @override 1103 @override
1102 List<DartType> _getTypeVariables() { 1104 List<ResolutionDartType> _getTypeVariables() {
1103 // Create synthetic type variables for the mixin application. 1105 // Create synthetic type variables for the mixin application.
1104 List<DartType> typeVariables = <DartType>[]; 1106 List<ResolutionDartType> typeVariables = <ResolutionDartType>[];
1105 int index = 0; 1107 int index = 0;
1106 for (TypeVariableType type in subclass.typeVariables) { 1108 for (ResolutionTypeVariableType type in subclass.typeVariables) {
1107 SyntheticTypeVariableElementZ typeVariableElement = 1109 SyntheticTypeVariableElementZ typeVariableElement =
1108 new SyntheticTypeVariableElementZ(this, index, type.name); 1110 new SyntheticTypeVariableElementZ(this, index, type.name);
1109 TypeVariableType typeVariable = new TypeVariableType(typeVariableElement); 1111 ResolutionTypeVariableType typeVariable =
1112 new ResolutionTypeVariableType(typeVariableElement);
1110 typeVariables.add(typeVariable); 1113 typeVariables.add(typeVariable);
1111 index++; 1114 index++;
1112 } 1115 }
1113 // Setup bounds on the synthetic type variables. 1116 // Setup bounds on the synthetic type variables.
1114 for (TypeVariableType type in subclass.typeVariables) { 1117 for (ResolutionTypeVariableType type in subclass.typeVariables) {
1115 TypeVariableType typeVariable = typeVariables[type.element.index]; 1118 ResolutionTypeVariableType typeVariable =
1119 typeVariables[type.element.index];
1116 SyntheticTypeVariableElementZ typeVariableElement = typeVariable.element; 1120 SyntheticTypeVariableElementZ typeVariableElement = typeVariable.element;
1117 typeVariableElement._type = typeVariable; 1121 typeVariableElement._type = typeVariable;
1118 typeVariableElement._bound = 1122 typeVariableElement._bound =
1119 type.element.bound.subst(typeVariables, subclass.typeVariables); 1123 type.element.bound.subst(typeVariables, subclass.typeVariables);
1120 } 1124 }
1121 return typeVariables; 1125 return typeVariables;
1122 } 1126 }
1123 1127
1124 @override 1128 @override
1125 InterfaceType get supertype { 1129 ResolutionInterfaceType get supertype {
1126 if (_supertype == null) { 1130 if (_supertype == null) {
1127 // Substitute the type variables in [_supertypeBase] provided by 1131 // Substitute the type variables in [_supertypeBase] provided by
1128 // [_subclass] with the type variables in this unnamed mixin application. 1132 // [_subclass] with the type variables in this unnamed mixin application.
1129 // 1133 //
1130 // For instance 1134 // For instance
1131 // class S<S.T> {} 1135 // class S<S.T> {}
1132 // class M<M.T> {} 1136 // class M<M.T> {}
1133 // class C<C.T> extends S<C.T> with M<C.T> {} 1137 // class C<C.T> extends S<C.T> with M<C.T> {}
1134 // the unnamed mixin application should be 1138 // the unnamed mixin application should be
1135 // abstract class S+M<S+M.T> extends S<S+M.T> implements M<S+M.T> {} 1139 // abstract class S+M<S+M.T> extends S<S+M.T> implements M<S+M.T> {}
1136 // but the supertype is provided as S<C.T> and we need to substitute S+M.T 1140 // but the supertype is provided as S<C.T> and we need to substitute S+M.T
1137 // for C.T. 1141 // for C.T.
1138 _supertype = _supertypeBase.subst(typeVariables, subclass.typeVariables); 1142 _supertype = _supertypeBase.subst(typeVariables, subclass.typeVariables);
1139 } 1143 }
1140 return _supertype; 1144 return _supertype;
1141 } 1145 }
1142 1146
1143 @override 1147 @override
1144 Link<DartType> get interfaces { 1148 Link<ResolutionDartType> get interfaces {
1145 if (_interfaces == null) { 1149 if (_interfaces == null) {
1146 // Substitute the type variables in [_mixinBase] provided by 1150 // Substitute the type variables in [_mixinBase] provided by
1147 // [_subclass] with the type variables in this unnamed mixin application. 1151 // [_subclass] with the type variables in this unnamed mixin application.
1148 // 1152 //
1149 // For instance 1153 // For instance
1150 // class S<S.T> {} 1154 // class S<S.T> {}
1151 // class M<M.T> {} 1155 // class M<M.T> {}
1152 // class C<C.T> extends S<C.T> with M<C.T> {} 1156 // class C<C.T> extends S<C.T> with M<C.T> {}
1153 // the unnamed mixin application should be 1157 // the unnamed mixin application should be
1154 // abstract class S+M<S+M.T> extends S<S+M.T> implements M<S+M.T> {} 1158 // abstract class S+M<S+M.T> extends S<S+M.T> implements M<S+M.T> {}
1155 // but the mixin is provided as M<C.T> and we need to substitute S+M.T 1159 // but the mixin is provided as M<C.T> and we need to substitute S+M.T
1156 // for C.T. 1160 // for C.T.
1157 _interfaces = const Link<DartType>() 1161 _interfaces = const Link<ResolutionDartType>()
1158 .prepend(_mixinBase.subst(typeVariables, subclass.typeVariables)); 1162 .prepend(_mixinBase.subst(typeVariables, subclass.typeVariables));
1159 } 1163 }
1160 return _interfaces; 1164 return _interfaces;
1161 } 1165 }
1162 1166
1163 @override 1167 @override
1164 accept(ElementVisitor visitor, arg) { 1168 accept(ElementVisitor visitor, arg) {
1165 return visitor.visitMixinApplicationElement(this, arg); 1169 return visitor.visitMixinApplicationElement(this, arg);
1166 } 1170 }
1167 1171
(...skipping 12 matching lines...) Expand all
1180 @override 1184 @override
1181 bool get isObject => false; 1185 bool get isObject => false;
1182 1186
1183 @override 1187 @override
1184 bool get isProxy => false; 1188 bool get isProxy => false;
1185 1189
1186 @override 1190 @override
1187 LibraryElement get library => enclosingElement.library; 1191 LibraryElement get library => enclosingElement.library;
1188 1192
1189 @override 1193 @override
1190 InterfaceType get mixinType => interfaces.head; 1194 ResolutionInterfaceType get mixinType => interfaces.head;
1191 1195
1192 @override 1196 @override
1193 int get sourceOffset => subclass.sourceOffset; 1197 int get sourceOffset => subclass.sourceOffset;
1194 1198
1195 @override 1199 @override
1196 SourceSpan get sourcePosition => subclass.sourcePosition; 1200 SourceSpan get sourcePosition => subclass.sourcePosition;
1197 } 1201 }
1198 1202
1199 class EnumClassElementZ extends ClassElementZ implements EnumClassElement { 1203 class EnumClassElementZ extends ClassElementZ implements EnumClassElement {
1200 List<FieldElement> _enumValues; 1204 List<FieldElement> _enumValues;
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 @override 1297 @override
1294 bool get isRedirectingFactory => false; 1298 bool get isRedirectingFactory => false;
1295 1299
1296 @override 1300 @override
1297 bool get isRedirectingGenerative => false; 1301 bool get isRedirectingGenerative => false;
1298 1302
1299 @override 1303 @override
1300 PrefixElement get redirectionDeferredPrefix => null; 1304 PrefixElement get redirectionDeferredPrefix => null;
1301 1305
1302 @override 1306 @override
1303 InterfaceType computeEffectiveTargetType(InterfaceType newType) => newType; 1307 ResolutionInterfaceType computeEffectiveTargetType(
1308 ResolutionInterfaceType newType) =>
1309 newType;
1304 } 1310 }
1305 1311
1306 class GenerativeConstructorElementZ extends ConstructorElementZ { 1312 class GenerativeConstructorElementZ extends ConstructorElementZ {
1307 GenerativeConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1313 GenerativeConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1308 1314
1309 @override 1315 @override
1310 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR; 1316 ElementKind get kind => ElementKind.GENERATIVE_CONSTRUCTOR;
1311 1317
1312 @override 1318 @override
1313 bool get isRedirectingGenerative => _decoder.getBool(Key.IS_REDIRECTING); 1319 bool get isRedirectingGenerative => _decoder.getBool(Key.IS_REDIRECTING);
(...skipping 18 matching lines...) Expand all
1332 } 1338 }
1333 1339
1334 class FactoryConstructorElementZ extends ConstructorElementZ { 1340 class FactoryConstructorElementZ extends ConstructorElementZ {
1335 FactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1341 FactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1336 1342
1337 @override 1343 @override
1338 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR; 1344 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR;
1339 } 1345 }
1340 1346
1341 class RedirectingFactoryConstructorElementZ extends ConstructorElementZ { 1347 class RedirectingFactoryConstructorElementZ extends ConstructorElementZ {
1342 DartType _effectiveTargetType; 1348 ResolutionDartType _effectiveTargetType;
1343 ConstructorElement _immediateRedirectionTarget; 1349 ConstructorElement _immediateRedirectionTarget;
1344 PrefixElement _redirectionDeferredPrefix; 1350 PrefixElement _redirectionDeferredPrefix;
1345 bool _effectiveTargetIsMalformed; 1351 bool _effectiveTargetIsMalformed;
1346 1352
1347 RedirectingFactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder); 1353 RedirectingFactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder);
1348 1354
1349 @override 1355 @override
1350 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR; 1356 ElementKind get kind => ElementKind.FACTORY_CONSTRUCTOR;
1351 1357
1352 @override 1358 @override
(...skipping 20 matching lines...) Expand all
1373 return _effectiveTargetIsMalformed; 1379 return _effectiveTargetIsMalformed;
1374 } 1380 }
1375 1381
1376 @override 1382 @override
1377 ConstructorElement get effectiveTarget { 1383 ConstructorElement get effectiveTarget {
1378 _ensureEffectiveTarget(); 1384 _ensureEffectiveTarget();
1379 return _effectiveTarget; 1385 return _effectiveTarget;
1380 } 1386 }
1381 1387
1382 @override 1388 @override
1383 DartType computeEffectiveTargetType(InterfaceType newType) { 1389 ResolutionDartType computeEffectiveTargetType(
1390 ResolutionInterfaceType newType) {
1384 _ensureEffectiveTarget(); 1391 _ensureEffectiveTarget();
1385 return _effectiveTargetType.substByContext(newType); 1392 return _effectiveTargetType.substByContext(newType);
1386 } 1393 }
1387 1394
1388 void _ensureRedirection() { 1395 void _ensureRedirection() {
1389 if (_immediateRedirectionTarget == null) { 1396 if (_immediateRedirectionTarget == null) {
1390 _immediateRedirectionTarget = 1397 _immediateRedirectionTarget =
1391 _decoder.getElement(Key.IMMEDIATE_REDIRECTION_TARGET); 1398 _decoder.getElement(Key.IMMEDIATE_REDIRECTION_TARGET);
1392 _redirectionDeferredPrefix = 1399 _redirectionDeferredPrefix =
1393 _decoder.getElement(Key.PREFIX, isOptional: true); 1400 _decoder.getElement(Key.PREFIX, isOptional: true);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1425 1432
1426 @override 1433 @override
1427 accept(ElementVisitor visitor, arg) { 1434 accept(ElementVisitor visitor, arg) {
1428 return visitor.visitConstructorElement(this, arg); 1435 return visitor.visitConstructorElement(this, arg);
1429 } 1436 }
1430 1437
1431 @override 1438 @override
1432 AsyncMarker get asyncMarker => AsyncMarker.SYNC; 1439 AsyncMarker get asyncMarker => AsyncMarker.SYNC;
1433 1440
1434 @override 1441 @override
1435 InterfaceType computeEffectiveTargetType(InterfaceType newType) { 1442 ResolutionInterfaceType computeEffectiveTargetType(
1443 ResolutionInterfaceType newType) {
1436 return enclosingClass.thisType.substByContext(newType); 1444 return enclosingClass.thisType.substByContext(newType);
1437 } 1445 }
1438 1446
1439 @override 1447 @override
1440 DartType computeType(Resolution resolution) => type; 1448 ResolutionDartType computeType(Resolution resolution) => type;
1441 1449
1442 @override 1450 @override
1443 bool get isConst => false; 1451 bool get isConst => false;
1444 1452
1445 @override 1453 @override
1446 bool get isClassMember => true; 1454 bool get isClassMember => true;
1447 1455
1448 @override 1456 @override
1449 bool get isDefaultConstructor => false; 1457 bool get isDefaultConstructor => false;
1450 1458
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1534 @override 1542 @override
1535 PrefixElement get redirectionDeferredPrefix => null; 1543 PrefixElement get redirectionDeferredPrefix => null;
1536 1544
1537 @override 1545 @override
1538 int get sourceOffset => enclosingClass.sourceOffset; 1546 int get sourceOffset => enclosingClass.sourceOffset;
1539 1547
1540 @override 1548 @override
1541 SourceSpan get sourcePosition => enclosingClass.sourcePosition; 1549 SourceSpan get sourcePosition => enclosingClass.sourcePosition;
1542 1550
1543 @override 1551 @override
1544 FunctionType get type { 1552 ResolutionFunctionType get type {
1545 // TODO(johnniwinther): Ensure that the function type substitutes type 1553 // TODO(johnniwinther): Ensure that the function type substitutes type
1546 // variables correctly. 1554 // variables correctly.
1547 return definingConstructor.type; 1555 return definingConstructor.type;
1548 } 1556 }
1549 1557
1550 @override 1558 @override
1551 List<DartType> get typeVariables => _unsupported("typeVariables"); 1559 List<ResolutionDartType> get typeVariables => _unsupported("typeVariables");
1552 } 1560 }
1553 1561
1554 abstract class MemberElementMixin 1562 abstract class MemberElementMixin
1555 implements DeserializedElementZ, MemberElement { 1563 implements DeserializedElementZ, MemberElement {
1556 final List<FunctionElement> nestedClosures = <FunctionElement>[]; 1564 final List<FunctionElement> nestedClosures = <FunctionElement>[];
1557 1565
1558 @override 1566 @override
1559 MemberElement get memberContext => this; 1567 MemberElement get memberContext => this;
1560 1568
1561 @override 1569 @override
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
1832 StaticSetterElementZ(ObjectDecoder decoder) : super(decoder); 1840 StaticSetterElementZ(ObjectDecoder decoder) : super(decoder);
1833 } 1841 }
1834 1842
1835 class InstanceSetterElementZ extends SetterElementZ 1843 class InstanceSetterElementZ extends SetterElementZ
1836 with ClassMemberMixin, InstanceMemberMixin { 1844 with ClassMemberMixin, InstanceMemberMixin {
1837 InstanceSetterElementZ(ObjectDecoder decoder) : super(decoder); 1845 InstanceSetterElementZ(ObjectDecoder decoder) : super(decoder);
1838 } 1846 }
1839 1847
1840 abstract class TypeDeclarationMixin<T extends GenericType> 1848 abstract class TypeDeclarationMixin<T extends GenericType>
1841 implements ElementZ, TypeDeclarationElement { 1849 implements ElementZ, TypeDeclarationElement {
1842 List<DartType> _typeVariables; 1850 List<ResolutionDartType> _typeVariables;
1843 T _rawType; 1851 T _rawType;
1844 T _thisType; 1852 T _thisType;
1845 Name _memberName; 1853 Name _memberName;
1846 1854
1847 Name get memberName { 1855 Name get memberName {
1848 if (_memberName == null) { 1856 if (_memberName == null) {
1849 _memberName = new Name(name, library); 1857 _memberName = new Name(name, library);
1850 } 1858 }
1851 return _memberName; 1859 return _memberName;
1852 } 1860 }
1853 1861
1854 List<DartType> _getTypeVariables(); 1862 List<ResolutionDartType> _getTypeVariables();
1855 1863
1856 void _ensureTypes() { 1864 void _ensureTypes() {
1857 if (_typeVariables == null) { 1865 if (_typeVariables == null) {
1858 _typeVariables = _getTypeVariables(); 1866 _typeVariables = _getTypeVariables();
1859 _rawType = _createType(new List<DartType>.filled( 1867 _rawType = _createType(new List<ResolutionDartType>.filled(
1860 _typeVariables.length, const DynamicType())); 1868 _typeVariables.length, const ResolutionDynamicType()));
1861 _thisType = _createType(_typeVariables); 1869 _thisType = _createType(_typeVariables);
1862 } 1870 }
1863 } 1871 }
1864 1872
1865 T _createType(List<DartType> typeArguments); 1873 T _createType(List<ResolutionDartType> typeArguments);
1866 1874
1867 @override 1875 @override
1868 List<DartType> get typeVariables { 1876 List<ResolutionDartType> get typeVariables {
1869 _ensureTypes(); 1877 _ensureTypes();
1870 return _typeVariables; 1878 return _typeVariables;
1871 } 1879 }
1872 1880
1873 @override 1881 @override
1874 T get rawType { 1882 T get rawType {
1875 _ensureTypes(); 1883 _ensureTypes();
1876 return _rawType; 1884 return _rawType;
1877 } 1885 }
1878 1886
1879 @override 1887 @override
1880 T get thisType { 1888 T get thisType {
1881 _ensureTypes(); 1889 _ensureTypes();
1882 return _thisType; 1890 return _thisType;
1883 } 1891 }
1884 1892
1885 @override 1893 @override
1886 T computeType(Resolution resolution) => thisType; 1894 T computeType(Resolution resolution) => thisType;
1887 1895
1888 @override 1896 @override
1889 bool get isResolved => true; 1897 bool get isResolved => true;
1890 } 1898 }
1891 1899
1892 class TypedefElementZ extends DeserializedElementZ 1900 class TypedefElementZ extends DeserializedElementZ
1893 with 1901 with
1894 AnalyzableElementMixin, 1902 AnalyzableElementMixin,
1895 AstElementMixinZ, 1903 AstElementMixinZ,
1896 LibraryMemberMixin, 1904 LibraryMemberMixin,
1897 ParametersMixin, 1905 ParametersMixin,
1898 TypeDeclarationMixin<TypedefType> 1906 TypeDeclarationMixin<ResolutionTypedefType>
1899 implements TypedefElement { 1907 implements TypedefElement {
1900 DartType _alias; 1908 ResolutionDartType _alias;
1901 1909
1902 TypedefElementZ(ObjectDecoder decoder) : super(decoder); 1910 TypedefElementZ(ObjectDecoder decoder) : super(decoder);
1903 1911
1904 TypedefType _createType(List<DartType> typeArguments) { 1912 ResolutionTypedefType _createType(List<ResolutionDartType> typeArguments) {
1905 return new TypedefType(this, typeArguments); 1913 return new ResolutionTypedefType(this, typeArguments);
1906 } 1914 }
1907 1915
1908 @override 1916 @override
1909 List<DartType> _getTypeVariables() { 1917 List<ResolutionDartType> _getTypeVariables() {
1910 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true); 1918 return _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true);
1911 } 1919 }
1912 1920
1913 @override 1921 @override
1914 ElementKind get kind => ElementKind.TYPEDEF; 1922 ElementKind get kind => ElementKind.TYPEDEF;
1915 1923
1916 @override 1924 @override
1917 accept(ElementVisitor visitor, arg) { 1925 accept(ElementVisitor visitor, arg) {
1918 return visitor.visitTypedefElement(this, arg); 1926 return visitor.visitTypedefElement(this, arg);
1919 } 1927 }
1920 1928
1921 @override 1929 @override
1922 DartType get alias { 1930 ResolutionDartType get alias {
1923 if (_alias == null) { 1931 if (_alias == null) {
1924 _alias = _decoder.getType(Key.ALIAS); 1932 _alias = _decoder.getType(Key.ALIAS);
1925 } 1933 }
1926 return _alias; 1934 return _alias;
1927 } 1935 }
1928 1936
1929 @override 1937 @override
1930 void ensureResolved(Resolution resolution) {} 1938 void ensureResolved(Resolution resolution) {}
1931 1939
1932 @override 1940 @override
1933 void checkCyclicReference(Resolution resolution) {} 1941 void checkCyclicReference(Resolution resolution) {}
1934 } 1942 }
1935 1943
1936 class TypeVariableElementZ extends DeserializedElementZ 1944 class TypeVariableElementZ extends DeserializedElementZ
1937 with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin 1945 with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin
1938 implements TypeVariableElement { 1946 implements TypeVariableElement {
1939 GenericElement _typeDeclaration; 1947 GenericElement _typeDeclaration;
1940 TypeVariableType _type; 1948 ResolutionTypeVariableType _type;
1941 DartType _bound; 1949 ResolutionDartType _bound;
1942 Name _memberName; 1950 Name _memberName;
1943 1951
1944 TypeVariableElementZ(ObjectDecoder decoder) : super(decoder); 1952 TypeVariableElementZ(ObjectDecoder decoder) : super(decoder);
1945 1953
1946 Name get memberName { 1954 Name get memberName {
1947 if (_memberName == null) { 1955 if (_memberName == null) {
1948 _memberName = new Name(name, library); 1956 _memberName = new Name(name, library);
1949 } 1957 }
1950 return _memberName; 1958 return _memberName;
1951 } 1959 }
(...skipping 21 matching lines...) Expand all
1973 int get index => _decoder.getInt(Key.INDEX); 1981 int get index => _decoder.getInt(Key.INDEX);
1974 1982
1975 @override 1983 @override
1976 GenericElement get typeDeclaration { 1984 GenericElement get typeDeclaration {
1977 if (_typeDeclaration == null) { 1985 if (_typeDeclaration == null) {
1978 _typeDeclaration = _decoder.getElement(Key.TYPE_DECLARATION); 1986 _typeDeclaration = _decoder.getElement(Key.TYPE_DECLARATION);
1979 } 1987 }
1980 return _typeDeclaration; 1988 return _typeDeclaration;
1981 } 1989 }
1982 1990
1983 DartType get bound { 1991 ResolutionDartType get bound {
1984 if (_bound == null) { 1992 if (_bound == null) {
1985 _bound = _decoder.getType(Key.BOUND); 1993 _bound = _decoder.getType(Key.BOUND);
1986 } 1994 }
1987 return _bound; 1995 return _bound;
1988 } 1996 }
1989 1997
1990 @override 1998 @override
1991 LibraryElement get library => typeDeclaration.library; 1999 LibraryElement get library => typeDeclaration.library;
1992 } 2000 }
1993 2001
1994 class SyntheticTypeVariableElementZ extends ElementZ 2002 class SyntheticTypeVariableElementZ extends ElementZ
1995 with AnalyzableElementMixin, AstElementMixinZ 2003 with AnalyzableElementMixin, AstElementMixinZ
1996 implements TypeVariableElement { 2004 implements TypeVariableElement {
1997 final TypeDeclarationElement typeDeclaration; 2005 final TypeDeclarationElement typeDeclaration;
1998 final int index; 2006 final int index;
1999 final String name; 2007 final String name;
2000 TypeVariableType _type; 2008 ResolutionTypeVariableType _type;
2001 DartType _bound; 2009 ResolutionDartType _bound;
2002 Name _memberName; 2010 Name _memberName;
2003 2011
2004 SyntheticTypeVariableElementZ(this.typeDeclaration, this.index, this.name); 2012 SyntheticTypeVariableElementZ(this.typeDeclaration, this.index, this.name);
2005 2013
2006 Name get memberName { 2014 Name get memberName {
2007 if (_memberName == null) { 2015 if (_memberName == null) {
2008 _memberName = new Name(name, library); 2016 _memberName = new Name(name, library);
2009 } 2017 }
2010 return _memberName; 2018 return _memberName;
2011 } 2019 }
2012 2020
2013 @override 2021 @override
2014 ElementKind get kind => ElementKind.TYPE_VARIABLE; 2022 ElementKind get kind => ElementKind.TYPE_VARIABLE;
2015 2023
2016 @override 2024 @override
2017 accept(ElementVisitor visitor, arg) { 2025 accept(ElementVisitor visitor, arg) {
2018 return visitor.visitTypeVariableElement(this, arg); 2026 return visitor.visitTypeVariableElement(this, arg);
2019 } 2027 }
2020 2028
2021 @override 2029 @override
2022 CompilationUnitElement get compilationUnit { 2030 CompilationUnitElement get compilationUnit {
2023 return typeDeclaration.compilationUnit; 2031 return typeDeclaration.compilationUnit;
2024 } 2032 }
2025 2033
2026 @override 2034 @override
2027 TypeVariableType get type { 2035 ResolutionTypeVariableType get type {
2028 assert(invariant(this, _type != null, 2036 assert(invariant(this, _type != null,
2029 message: "Type variable type has not been set on $this.")); 2037 message: "Type variable type has not been set on $this."));
2030 return _type; 2038 return _type;
2031 } 2039 }
2032 2040
2033 @override 2041 @override
2034 TypeVariableType computeType(Resolution resolution) => type; 2042 ResolutionTypeVariableType computeType(Resolution resolution) => type;
2035 2043
2036 @override 2044 @override
2037 Element get enclosingElement => typeDeclaration; 2045 Element get enclosingElement => typeDeclaration;
2038 2046
2039 @override 2047 @override
2040 Element get enclosingClass => typeDeclaration; 2048 Element get enclosingClass => typeDeclaration;
2041 2049
2042 DartType get bound { 2050 ResolutionDartType get bound {
2043 assert(invariant(this, _bound != null, 2051 assert(invariant(this, _bound != null,
2044 message: "Type variable bound has not been set on $this.")); 2052 message: "Type variable bound has not been set on $this."));
2045 return _bound; 2053 return _bound;
2046 } 2054 }
2047 2055
2048 @override 2056 @override
2049 LibraryElement get library => typeDeclaration.library; 2057 LibraryElement get library => typeDeclaration.library;
2050 2058
2051 @override 2059 @override
2052 int get sourceOffset => typeDeclaration.sourceOffset; 2060 int get sourceOffset => typeDeclaration.sourceOffset;
2053 2061
2054 @override 2062 @override
2055 SourceSpan get sourcePosition => typeDeclaration.sourcePosition; 2063 SourceSpan get sourcePosition => typeDeclaration.sourcePosition;
2056 } 2064 }
2057 2065
2058 abstract class ParameterElementZ extends DeserializedElementZ 2066 abstract class ParameterElementZ extends DeserializedElementZ
2059 with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin 2067 with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin
2060 implements ParameterElement { 2068 implements ParameterElement {
2061 FunctionElement _functionDeclaration; 2069 FunctionElement _functionDeclaration;
2062 ConstantExpression _constant; 2070 ConstantExpression _constant;
2063 DartType _type; 2071 ResolutionDartType _type;
2064 2072
2065 ParameterElementZ(ObjectDecoder decoder) : super(decoder); 2073 ParameterElementZ(ObjectDecoder decoder) : super(decoder);
2066 2074
2067 @override 2075 @override
2068 bool get isFinal => _decoder.getBool(Key.IS_FINAL); 2076 bool get isFinal => _decoder.getBool(Key.IS_FINAL);
2069 2077
2070 @override 2078 @override
2071 bool get isConst => false; 2079 bool get isConst => false;
2072 2080
2073 @override 2081 @override
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2120 @override 2128 @override
2121 bool get isOptional => _decoder.getBool(Key.IS_OPTIONAL); 2129 bool get isOptional => _decoder.getBool(Key.IS_OPTIONAL);
2122 2130
2123 @override 2131 @override
2124 LibraryElement get library => executableContext.library; 2132 LibraryElement get library => executableContext.library;
2125 2133
2126 @override 2134 @override
2127 MemberElement get memberContext => executableContext.memberContext; 2135 MemberElement get memberContext => executableContext.memberContext;
2128 2136
2129 @override 2137 @override
2130 List<DartType> get typeVariables => functionSignature.typeVariables; 2138 List<ResolutionDartType> get typeVariables => functionSignature.typeVariables;
2131 } 2139 }
2132 2140
2133 class LocalParameterElementZ extends ParameterElementZ 2141 class LocalParameterElementZ extends ParameterElementZ
2134 implements LocalParameterElement { 2142 implements LocalParameterElement {
2135 LocalParameterElementZ(ObjectDecoder decoder) : super(decoder); 2143 LocalParameterElementZ(ObjectDecoder decoder) : super(decoder);
2136 2144
2137 @override 2145 @override
2138 accept(ElementVisitor visitor, arg) { 2146 accept(ElementVisitor visitor, arg) {
2139 return visitor.visitParameterElement(this, arg); 2147 return visitor.visitParameterElement(this, arg);
2140 } 2148 }
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
2398 } 2406 }
2399 2407
2400 @override 2408 @override
2401 Node get node => throw new UnsupportedError('${this}.node'); 2409 Node get node => throw new UnsupportedError('${this}.node');
2402 2410
2403 @override 2411 @override
2404 bool get hasNode => false; 2412 bool get hasNode => false;
2405 2413
2406 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})'; 2414 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})';
2407 } 2415 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698