| 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 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 /// before query. | 229 /// before query. |
| 230 class ListedContainer { | 230 class ListedContainer { |
| 231 final Map<String, Element> _lookupMap = <String, Element>{}; | 231 final Map<String, Element> _lookupMap = <String, Element>{}; |
| 232 | 232 |
| 233 ListedContainer(List<Element> elements) { | 233 ListedContainer(List<Element> elements) { |
| 234 Set<String> accessorNames = new Set<String>(); | 234 Set<String> accessorNames = new Set<String>(); |
| 235 Map<String, Element> getters = <String, Element>{}; | 235 Map<String, Element> getters = <String, Element>{}; |
| 236 Map<String, Element> setters = <String, Element>{}; | 236 Map<String, Element> setters = <String, Element>{}; |
| 237 for (Element element in elements) { | 237 for (Element element in elements) { |
| 238 String name = element.name; | 238 String name = element.name; |
| 239 if (element.isGetter) { | 239 if (element.isDeferredLoaderGetter) { |
| 240 // Store directly. |
| 241 // TODO(johnniwinther): Should modelx be normalized to put `loadLibrary` |
| 242 // in an [AbstractFieldElement] instead? |
| 243 _lookupMap[name] = element; |
| 244 } else if (element.isGetter) { |
| 240 accessorNames.add(name); | 245 accessorNames.add(name); |
| 241 getters[name] = element; | 246 getters[name] = element; |
| 242 // Inserting [element] here to ensure insert order of [name]. | 247 // Inserting [element] here to ensure insert order of [name]. |
| 243 _lookupMap[name] = element; | 248 _lookupMap[name] = element; |
| 244 } else if (element.isSetter) { | 249 } else if (element.isSetter) { |
| 245 accessorNames.add(name); | 250 accessorNames.add(name); |
| 246 setters[name] = element; | 251 setters[name] = element; |
| 247 // Inserting [element] here to ensure insert order of [name]. | 252 // Inserting [element] here to ensure insert order of [name]. |
| 248 _lookupMap[name] = element; | 253 _lookupMap[name] = element; |
| 249 } else { | 254 } else { |
| (...skipping 2023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2273 | 2278 |
| 2274 String toString() => 'Z$kind($uri)'; | 2279 String toString() => 'Z$kind($uri)'; |
| 2275 } | 2280 } |
| 2276 | 2281 |
| 2277 class PrefixElementZ extends DeserializedElementZ | 2282 class PrefixElementZ extends DeserializedElementZ |
| 2278 with LibraryMemberMixin | 2283 with LibraryMemberMixin |
| 2279 implements PrefixElement { | 2284 implements PrefixElement { |
| 2280 bool _isDeferred; | 2285 bool _isDeferred; |
| 2281 ImportElement _deferredImport; | 2286 ImportElement _deferredImport; |
| 2282 GetterElement _loadLibrary; | 2287 GetterElement _loadLibrary; |
| 2288 ListedContainer _members; |
| 2283 | 2289 |
| 2284 PrefixElementZ(ObjectDecoder decoder) : super(decoder); | 2290 PrefixElementZ(ObjectDecoder decoder) : super(decoder); |
| 2285 | 2291 |
| 2286 @override | 2292 @override |
| 2287 accept(ElementVisitor visitor, arg) => visitor.visitPrefixElement(this, arg); | 2293 accept(ElementVisitor visitor, arg) => visitor.visitPrefixElement(this, arg); |
| 2288 | 2294 |
| 2289 @override | 2295 @override |
| 2290 bool get isTopLevel => false; | 2296 bool get isTopLevel => false; |
| 2291 | 2297 |
| 2292 void _ensureDeferred() { | 2298 void _ensureDeferred() { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 2312 } | 2318 } |
| 2313 | 2319 |
| 2314 @override | 2320 @override |
| 2315 GetterElement get loadLibrary { | 2321 GetterElement get loadLibrary { |
| 2316 return _loadLibrary; | 2322 return _loadLibrary; |
| 2317 } | 2323 } |
| 2318 | 2324 |
| 2319 @override | 2325 @override |
| 2320 ElementKind get kind => ElementKind.PREFIX; | 2326 ElementKind get kind => ElementKind.PREFIX; |
| 2321 | 2327 |
| 2328 void _ensureMembers() { |
| 2329 if (_members == null) { |
| 2330 _members = new ListedContainer( |
| 2331 _decoder.getElements(Key.MEMBERS, isOptional: true)); |
| 2332 } |
| 2333 } |
| 2334 |
| 2322 @override | 2335 @override |
| 2323 Element lookupLocalMember(String memberName) { | 2336 Element lookupLocalMember(String memberName) { |
| 2324 return _unsupported('lookupLocalMember'); | 2337 _ensureMembers(); |
| 2338 return _members.lookup(memberName); |
| 2339 } |
| 2340 |
| 2341 @override |
| 2342 void forEachLocalMember(void f(Element member)) { |
| 2343 _ensureMembers(); |
| 2344 _members.forEach(f); |
| 2325 } | 2345 } |
| 2326 } | 2346 } |
| 2327 | 2347 |
| 2328 class MetadataAnnotationZ implements MetadataAnnotation { | 2348 class MetadataAnnotationZ implements MetadataAnnotation { |
| 2329 final Element annotatedElement; | 2349 final Element annotatedElement; |
| 2330 final SourceSpan sourcePosition; | 2350 final SourceSpan sourcePosition; |
| 2331 final ConstantExpression constant; | 2351 final ConstantExpression constant; |
| 2332 | 2352 |
| 2333 MetadataAnnotationZ( | 2353 MetadataAnnotationZ( |
| 2334 this.annotatedElement, this.sourcePosition, this.constant); | 2354 this.annotatedElement, this.sourcePosition, this.constant); |
| 2335 | 2355 |
| 2336 @override | 2356 @override |
| 2337 MetadataAnnotation ensureResolved(Resolution resolution) { | 2357 MetadataAnnotation ensureResolved(Resolution resolution) { |
| 2338 // Do nothing. | 2358 // Do nothing. |
| 2339 } | 2359 } |
| 2340 | 2360 |
| 2341 @override | 2361 @override |
| 2342 Node get node => throw new UnsupportedError('${this}.node'); | 2362 Node get node => throw new UnsupportedError('${this}.node'); |
| 2343 | 2363 |
| 2344 @override | 2364 @override |
| 2345 bool get hasNode => false; | 2365 bool get hasNode => false; |
| 2346 | 2366 |
| 2347 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})'; | 2367 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})'; |
| 2348 } | 2368 } |
| OLD | NEW |