| 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; |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 } | 312 } |
| 313 } | 313 } |
| 314 | 314 |
| 315 class AbstractFieldElementZ extends ElementZ implements AbstractFieldElement { | 315 class AbstractFieldElementZ extends ElementZ implements AbstractFieldElement { |
| 316 final String name; | 316 final String name; |
| 317 final FunctionElement getter; | 317 final FunctionElement getter; |
| 318 final FunctionElement setter; | 318 final FunctionElement setter; |
| 319 | 319 |
| 320 AbstractFieldElementZ(this.name, this.getter, this.setter); | 320 AbstractFieldElementZ(this.name, this.getter, this.setter); |
| 321 | 321 |
| 322 FunctionElement get _canonicalElement => getter != null ? getter : setter; |
| 323 |
| 322 @override | 324 @override |
| 323 ElementKind get kind => ElementKind.ABSTRACT_FIELD; | 325 ElementKind get kind => ElementKind.ABSTRACT_FIELD; |
| 324 | 326 |
| 325 @override | 327 @override |
| 326 accept(ElementVisitor visitor, arg) { | 328 accept(ElementVisitor visitor, arg) { |
| 327 return visitor.visitAbstractFieldElement(this, arg); | 329 return visitor.visitAbstractFieldElement(this, arg); |
| 328 } | 330 } |
| 329 | 331 |
| 330 @override | 332 @override |
| 331 LibraryElement get library { | 333 LibraryElement get library => _canonicalElement.library; |
| 332 return getter != null ? getter.library : setter.library; | |
| 333 } | |
| 334 | 334 |
| 335 @override | 335 @override |
| 336 Element get enclosingElement { | 336 Element get enclosingElement => _canonicalElement.enclosingElement; |
| 337 return getter != null ? getter.enclosingElement : setter.enclosingElement; | |
| 338 } | |
| 339 | 337 |
| 340 @override | 338 @override |
| 341 SourceSpan get sourcePosition { | 339 SourceSpan get sourcePosition => _canonicalElement.sourcePosition; |
| 342 return getter != null ? getter.sourcePosition : setter.sourcePosition; | 340 |
| 343 } | 341 @override |
| 342 ClassElement get enclosingClass => _canonicalElement.enclosingClass; |
| 344 } | 343 } |
| 345 | 344 |
| 346 class LibraryElementZ extends DeserializedElementZ | 345 class LibraryElementZ extends DeserializedElementZ |
| 347 with AnalyzableElementMixin, | 346 with AnalyzableElementMixin, |
| 348 ContainerMixin, | 347 ContainerMixin, |
| 349 LibraryElementCommon | 348 LibraryElementCommon |
| 350 implements LibraryElement { | 349 implements LibraryElement { |
| 351 Uri _canonicalUri; | 350 Uri _canonicalUri; |
| 352 CompilationUnitElement _entryCompilationUnit; | 351 CompilationUnitElement _entryCompilationUnit; |
| 353 Link<CompilationUnitElement> _compilationUnits; | 352 Link<CompilationUnitElement> _compilationUnits; |
| (...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 _interfaces = toLink( | 845 _interfaces = toLink( |
| 847 _decoder.getTypes(Key.INTERFACES, isOptional: true)); | 846 _decoder.getTypes(Key.INTERFACES, isOptional: true)); |
| 848 } | 847 } |
| 849 return _interfaces; | 848 return _interfaces; |
| 850 } | 849 } |
| 851 | 850 |
| 852 @override | 851 @override |
| 853 bool get isEnumClass => false; | 852 bool get isEnumClass => false; |
| 854 | 853 |
| 855 @override | 854 @override |
| 856 bool get isProxy => _unsupported('isProxy'); | 855 bool get isProxy => _decoder.getBool(Key.IS_PROXY); |
| 857 | 856 |
| 858 @override | 857 @override |
| 859 bool get isUnnamedMixinApplication { | 858 bool get isUnnamedMixinApplication { |
| 860 return _unsupported('isUnnamedMixinApplication'); | 859 return _unsupported('isUnnamedMixinApplication'); |
| 861 } | 860 } |
| 862 | 861 |
| 863 @override | 862 @override |
| 864 Element lookupBackendMember(String memberName) { | 863 Element lookupBackendMember(String memberName) { |
| 865 return _unsupported('lookupBackendMember'); | 864 return _unsupported('lookupBackendMember'); |
| 866 } | 865 } |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1113 StaticFunctionElementZ(ObjectDecoder decoder) | 1112 StaticFunctionElementZ(ObjectDecoder decoder) |
| 1114 : super(decoder); | 1113 : super(decoder); |
| 1115 } | 1114 } |
| 1116 | 1115 |
| 1117 class InstanceFunctionElementZ extends FunctionElementZ | 1116 class InstanceFunctionElementZ extends FunctionElementZ |
| 1118 with ClassMemberMixin, InstanceMemberMixin { | 1117 with ClassMemberMixin, InstanceMemberMixin { |
| 1119 InstanceFunctionElementZ(ObjectDecoder decoder) | 1118 InstanceFunctionElementZ(ObjectDecoder decoder) |
| 1120 : super(decoder); | 1119 : super(decoder); |
| 1121 } | 1120 } |
| 1122 | 1121 |
| 1122 abstract class LocalExecutableMixin |
| 1123 implements DeserializedElementZ, ExecutableElement, LocalElement { |
| 1124 ExecutableElement _executableContext; |
| 1125 |
| 1126 @override |
| 1127 Element get enclosingElement => executableContext; |
| 1128 |
| 1129 @override |
| 1130 ExecutableElement get executableContext { |
| 1131 if (_executableContext == null) { |
| 1132 _executableContext = _decoder.getElement(Key.EXECUTABLE_CONTEXT); |
| 1133 } |
| 1134 return _executableContext; |
| 1135 } |
| 1136 |
| 1137 @override |
| 1138 MemberElement get memberContext => executableContext.memberContext; |
| 1139 |
| 1140 @override |
| 1141 bool get isLocal => true; |
| 1142 |
| 1143 @override |
| 1144 LibraryElement get library => memberContext.library; |
| 1145 |
| 1146 @override |
| 1147 CompilationUnitElement get compilationUnit { |
| 1148 return memberContext.compilationUnit; |
| 1149 } |
| 1150 |
| 1151 @override |
| 1152 bool get hasTreeElements => memberContext.hasTreeElements; |
| 1153 |
| 1154 @override |
| 1155 TreeElements get treeElements => memberContext.treeElements; |
| 1156 } |
| 1157 |
| 1158 class LocalFunctionElementZ extends DeserializedElementZ |
| 1159 with LocalExecutableMixin, |
| 1160 AstElementMixin, |
| 1161 ParametersMixin, |
| 1162 FunctionTypedElementMixin, |
| 1163 TypedElementMixin |
| 1164 implements LocalFunctionElement { |
| 1165 LocalFunctionElementZ(ObjectDecoder decoder) |
| 1166 : super(decoder); |
| 1167 |
| 1168 @override |
| 1169 accept(ElementVisitor visitor, arg) { |
| 1170 return visitor.visitFunctionElement(this, arg); |
| 1171 } |
| 1172 |
| 1173 @override |
| 1174 ElementKind get kind => ElementKind.FUNCTION; |
| 1175 } |
| 1176 |
| 1123 abstract class GetterElementZ extends DeserializedElementZ | 1177 abstract class GetterElementZ extends DeserializedElementZ |
| 1124 with AnalyzableElementMixin, | 1178 with AnalyzableElementMixin, |
| 1125 AstElementMixin, | 1179 AstElementMixin, |
| 1126 FunctionTypedElementMixin, | 1180 FunctionTypedElementMixin, |
| 1127 ParametersMixin, | 1181 ParametersMixin, |
| 1128 TypedElementMixin, | 1182 TypedElementMixin, |
| 1129 MemberElementMixin | 1183 MemberElementMixin |
| 1130 implements FunctionElement { | 1184 implements FunctionElement { |
| 1131 | 1185 |
| 1132 GetterElementZ(ObjectDecoder decoder) | 1186 GetterElementZ(ObjectDecoder decoder) |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1570 } | 1624 } |
| 1571 | 1625 |
| 1572 @override | 1626 @override |
| 1573 ElementKind get kind => ElementKind.PREFIX; | 1627 ElementKind get kind => ElementKind.PREFIX; |
| 1574 | 1628 |
| 1575 @override | 1629 @override |
| 1576 Element lookupLocalMember(String memberName) { | 1630 Element lookupLocalMember(String memberName) { |
| 1577 return _unsupported('lookupLocalMember'); | 1631 return _unsupported('lookupLocalMember'); |
| 1578 } | 1632 } |
| 1579 } | 1633 } |
| OLD | NEW |