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 library serialization.elements; | 5 library serialization.elements; |
6 | 6 |
7 import 'package:analyzer/dart/element/element.dart'; | 7 import 'package:analyzer/dart/element/element.dart'; |
8 import 'package:analyzer/dart/element/type.dart'; | 8 import 'package:analyzer/dart/element/type.dart'; |
9 import 'package:analyzer/src/dart/element/element.dart'; | 9 import 'package:analyzer/src/dart/element/element.dart'; |
10 import 'package:analyzer/src/dart/element/type.dart'; | 10 import 'package:analyzer/src/dart/element/type.dart'; |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 if (executableElement is PropertyAccessorElement) { | 532 if (executableElement is PropertyAccessorElement) { |
533 if (executableElement.isGetter) { | 533 if (executableElement.isGetter) { |
534 b.kind = UnlinkedExecutableKind.getter; | 534 b.kind = UnlinkedExecutableKind.getter; |
535 } else { | 535 } else { |
536 b.kind = UnlinkedExecutableKind.setter; | 536 b.kind = UnlinkedExecutableKind.setter; |
537 } | 537 } |
538 } else if (executableElement is ConstructorElementImpl) { | 538 } else if (executableElement is ConstructorElementImpl) { |
539 b.kind = UnlinkedExecutableKind.constructor; | 539 b.kind = UnlinkedExecutableKind.constructor; |
540 b.isConst = executableElement.isConst; | 540 b.isConst = executableElement.isConst; |
541 b.isFactory = executableElement.isFactory; | 541 b.isFactory = executableElement.isFactory; |
| 542 if (executableElement.redirectedConstructor != null) { |
| 543 b.isRedirectedConstructor = true; |
| 544 if (executableElement.isFactory) { |
| 545 EntityRefBuilder typeRef = serializeTypeRef( |
| 546 executableElement.redirectedConstructor.enclosingElement.type, |
| 547 executableElement); |
| 548 if (executableElement.redirectedConstructor.name.isNotEmpty) { |
| 549 String name = executableElement.redirectedConstructor.name; |
| 550 int typeId = typeRef.reference; |
| 551 LinkedReference typeLinkedRef = linkedReferences[typeId]; |
| 552 unlinkedReferences.add(new UnlinkedReferenceBuilder( |
| 553 name: name, prefixReference: typeId)); |
| 554 int refId = linkedReferences.length; |
| 555 linkedReferences.add(new LinkedReferenceBuilder( |
| 556 kind: ReferenceKind.constructor, unit: typeLinkedRef.unit)); |
| 557 b.redirectedConstructor = new EntityRefBuilder( |
| 558 reference: refId, typeArguments: typeRef.typeArguments); |
| 559 } else { |
| 560 b.redirectedConstructor = typeRef; |
| 561 } |
| 562 } else { |
| 563 b.redirectedConstructorName = |
| 564 executableElement.redirectedConstructor.name; |
| 565 } |
| 566 } |
542 if (executableElement.isConst && | 567 if (executableElement.isConst && |
543 executableElement.constantInitializers != null) { | 568 executableElement.constantInitializers != null) { |
544 Set<String> constructorParameterNames = | 569 Set<String> constructorParameterNames = |
545 executableElement.parameters.map((p) => p.name).toSet(); | 570 executableElement.parameters.map((p) => p.name).toSet(); |
546 b.constantInitializers = executableElement.constantInitializers | 571 b.constantInitializers = executableElement.constantInitializers |
547 .map((ConstructorInitializer initializer) => | 572 .map((ConstructorInitializer initializer) => |
548 serializeConstructorInitializer( | 573 serializeConstructorInitializer( |
549 initializer, | 574 initializer, |
550 (expr) => | 575 (expr) => |
551 serializeConstExpr(expr, constructorParameterNames))) | 576 serializeConstExpr(expr, constructorParameterNames))) |
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 exportNames.add(new LinkedExportNameBuilder( | 1278 exportNames.add(new LinkedExportNameBuilder( |
1254 name: name, | 1279 name: name, |
1255 dependency: serializeDependency(dependentLibrary), | 1280 dependency: serializeDependency(dependentLibrary), |
1256 unit: unit, | 1281 unit: unit, |
1257 kind: kind)); | 1282 kind: kind)); |
1258 } | 1283 } |
1259 pb.exportNames = exportNames; | 1284 pb.exportNames = exportNames; |
1260 return pb; | 1285 return pb; |
1261 } | 1286 } |
1262 } | 1287 } |
OLD | NEW |