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 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
451 @override | 451 @override |
452 String get libraryName { | 452 String get libraryName { |
453 return _decoder.getString(Key.LIBRARY_NAME); | 453 return _decoder.getString(Key.LIBRARY_NAME); |
454 } | 454 } |
455 | 455 |
456 @override | 456 @override |
457 bool get exportsHandled => true; | 457 bool get exportsHandled => true; |
458 | 458 |
459 void _ensureExports() { | 459 void _ensureExports() { |
460 if (_exportsMap == null) { | 460 if (_exportsMap == null) { |
461 _exportsMap = new ListedContainer(_decoder.getElements(Key.EXPORT_SCOPE)); | 461 _exportsMap = new ListedContainer( |
| 462 _decoder.getElements(Key.EXPORT_SCOPE, isOptional: true)); |
462 } | 463 } |
463 } | 464 } |
464 | 465 |
465 @override | 466 @override |
466 void forEachExport(f(Element element)) { | 467 void forEachExport(f(Element element)) { |
467 _ensureExports(); | 468 _ensureExports(); |
468 _exportsMap.forEach(f); | 469 _exportsMap.forEach(f); |
469 } | 470 } |
470 | 471 |
471 @override | 472 @override |
(...skipping 1778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2250 Export get node => _unsupported('node'); | 2251 Export get node => _unsupported('node'); |
2251 | 2252 |
2252 String toString() => 'Z$kind($uri)'; | 2253 String toString() => 'Z$kind($uri)'; |
2253 } | 2254 } |
2254 | 2255 |
2255 class PrefixElementZ extends DeserializedElementZ | 2256 class PrefixElementZ extends DeserializedElementZ |
2256 with LibraryMemberMixin | 2257 with LibraryMemberMixin |
2257 implements PrefixElement { | 2258 implements PrefixElement { |
2258 bool _isDeferred; | 2259 bool _isDeferred; |
2259 ImportElement _deferredImport; | 2260 ImportElement _deferredImport; |
| 2261 GetterElement _loadLibrary; |
2260 | 2262 |
2261 PrefixElementZ(ObjectDecoder decoder) : super(decoder); | 2263 PrefixElementZ(ObjectDecoder decoder) : super(decoder); |
2262 | 2264 |
2263 @override | 2265 @override |
2264 accept(ElementVisitor visitor, arg) => visitor.visitPrefixElement(this, arg); | 2266 accept(ElementVisitor visitor, arg) => visitor.visitPrefixElement(this, arg); |
2265 | 2267 |
2266 void _ensureDeferred() { | 2268 void _ensureDeferred() { |
2267 if (_isDeferred == null) { | 2269 if (_isDeferred == null) { |
2268 _isDeferred = _decoder.getBool(Key.IS_DEFERRED); | 2270 _isDeferred = _decoder.getBool(Key.IS_DEFERRED); |
2269 _deferredImport = _decoder.getElement(Key.IMPORT, isOptional: true); | 2271 if (_isDeferred) { |
| 2272 _deferredImport = _decoder.getElement(Key.IMPORT); |
| 2273 _loadLibrary = _decoder.getElement(Key.GETTER); |
| 2274 } |
2270 } | 2275 } |
2271 } | 2276 } |
2272 | 2277 |
2273 @override | 2278 @override |
2274 ImportElement get deferredImport { | 2279 ImportElement get deferredImport { |
2275 _ensureDeferred(); | 2280 _ensureDeferred(); |
2276 return _deferredImport; | 2281 return _deferredImport; |
2277 } | 2282 } |
2278 | 2283 |
2279 @override | 2284 @override |
2280 bool get isDeferred { | 2285 bool get isDeferred { |
2281 _ensureDeferred(); | 2286 _ensureDeferred(); |
2282 return _isDeferred; | 2287 return _isDeferred; |
2283 } | 2288 } |
2284 | 2289 |
2285 @override | 2290 @override |
| 2291 GetterElement get loadLibrary { |
| 2292 return _loadLibrary; |
| 2293 } |
| 2294 |
| 2295 @override |
2286 ElementKind get kind => ElementKind.PREFIX; | 2296 ElementKind get kind => ElementKind.PREFIX; |
2287 | 2297 |
2288 @override | 2298 @override |
2289 Element lookupLocalMember(String memberName) { | 2299 Element lookupLocalMember(String memberName) { |
2290 return _unsupported('lookupLocalMember'); | 2300 return _unsupported('lookupLocalMember'); |
2291 } | 2301 } |
2292 } | 2302 } |
2293 | 2303 |
2294 class MetadataAnnotationZ implements MetadataAnnotation { | 2304 class MetadataAnnotationZ implements MetadataAnnotation { |
2295 final Element annotatedElement; | 2305 final Element annotatedElement; |
2296 final SourceSpan sourcePosition; | 2306 final SourceSpan sourcePosition; |
2297 final ConstantExpression constant; | 2307 final ConstantExpression constant; |
2298 | 2308 |
2299 MetadataAnnotationZ( | 2309 MetadataAnnotationZ( |
2300 this.annotatedElement, this.sourcePosition, this.constant); | 2310 this.annotatedElement, this.sourcePosition, this.constant); |
2301 | 2311 |
2302 @override | 2312 @override |
2303 MetadataAnnotation ensureResolved(Resolution resolution) { | 2313 MetadataAnnotation ensureResolved(Resolution resolution) { |
2304 // Do nothing. | 2314 // Do nothing. |
2305 } | 2315 } |
2306 | 2316 |
2307 @override | 2317 @override |
2308 Node get node => throw new UnsupportedError('${this}.node'); | 2318 Node get node => throw new UnsupportedError('${this}.node'); |
2309 | 2319 |
2310 @override | 2320 @override |
2311 bool get hasNode => false; | 2321 bool get hasNode => false; |
2312 | 2322 |
2313 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})'; | 2323 String toString() => 'MetadataAnnotationZ(${constant.toDartText()})'; |
2314 } | 2324 } |
OLD | NEW |