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/member.dart'; |
10 import 'package:analyzer/src/dart/element/type.dart'; | 11 import 'package:analyzer/src/dart/element/type.dart'; |
11 import 'package:analyzer/src/generated/ast.dart'; | 12 import 'package:analyzer/src/generated/ast.dart'; |
12 import 'package:analyzer/src/generated/resolver.dart'; | 13 import 'package:analyzer/src/generated/resolver.dart'; |
13 import 'package:analyzer/src/generated/utilities_dart.dart'; | 14 import 'package:analyzer/src/generated/utilities_dart.dart'; |
14 import 'package:analyzer/src/summary/format.dart'; | 15 import 'package:analyzer/src/summary/format.dart'; |
15 import 'package:analyzer/src/summary/idl.dart'; | 16 import 'package:analyzer/src/summary/idl.dart'; |
16 import 'package:analyzer/src/summary/name_filter.dart'; | 17 import 'package:analyzer/src/summary/name_filter.dart'; |
17 import 'package:analyzer/src/summary/summarize_const_expr.dart'; | 18 import 'package:analyzer/src/summary/summarize_const_expr.dart'; |
18 | 19 |
19 /** | 20 /** |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 if (executableElement is PropertyAccessorElement) { | 532 if (executableElement is PropertyAccessorElement) { |
532 if (executableElement.isGetter) { | 533 if (executableElement.isGetter) { |
533 b.kind = UnlinkedExecutableKind.getter; | 534 b.kind = UnlinkedExecutableKind.getter; |
534 } else { | 535 } else { |
535 b.kind = UnlinkedExecutableKind.setter; | 536 b.kind = UnlinkedExecutableKind.setter; |
536 } | 537 } |
537 } else if (executableElement is ConstructorElementImpl) { | 538 } else if (executableElement is ConstructorElementImpl) { |
538 b.kind = UnlinkedExecutableKind.constructor; | 539 b.kind = UnlinkedExecutableKind.constructor; |
539 b.isConst = executableElement.isConst; | 540 b.isConst = executableElement.isConst; |
540 b.isFactory = executableElement.isFactory; | 541 b.isFactory = executableElement.isFactory; |
541 if (executableElement.redirectedConstructor != null) { | 542 ConstructorElement redirectedConstructor = |
| 543 executableElement.redirectedConstructor; |
| 544 if (redirectedConstructor != null) { |
542 b.isRedirectedConstructor = true; | 545 b.isRedirectedConstructor = true; |
543 if (executableElement.isFactory) { | 546 if (executableElement.isFactory) { |
544 EntityRefBuilder typeRef = serializeTypeRef( | 547 InterfaceType returnType = redirectedConstructor is ConstructorMember |
545 executableElement.redirectedConstructor.enclosingElement.type, | 548 ? redirectedConstructor.definingType |
546 executableElement.redirectedConstructor.enclosingElement); | 549 : redirectedConstructor.enclosingElement.type; |
547 if (executableElement.redirectedConstructor.name.isNotEmpty) { | 550 EntityRefBuilder typeRef = |
548 String name = executableElement.redirectedConstructor.name; | 551 serializeTypeRef(returnType, executableElement); |
| 552 if (redirectedConstructor.name.isNotEmpty) { |
| 553 String name = redirectedConstructor.name; |
549 int typeId = typeRef.reference; | 554 int typeId = typeRef.reference; |
550 LinkedReference typeLinkedRef = linkedReferences[typeId]; | 555 LinkedReference typeLinkedRef = linkedReferences[typeId]; |
551 unlinkedReferences.add(new UnlinkedReferenceBuilder( | 556 unlinkedReferences.add(new UnlinkedReferenceBuilder( |
552 name: name, prefixReference: typeId)); | 557 name: name, prefixReference: typeId)); |
553 int refId = linkedReferences.length; | 558 int refId = linkedReferences.length; |
554 linkedReferences.add(new LinkedReferenceBuilder( | 559 linkedReferences.add(new LinkedReferenceBuilder( |
555 kind: ReferenceKind.constructor, unit: typeLinkedRef.unit)); | 560 kind: ReferenceKind.constructor, unit: typeLinkedRef.unit)); |
556 b.redirectedConstructor = new EntityRefBuilder( | 561 b.redirectedConstructor = new EntityRefBuilder( |
557 reference: refId, typeArguments: typeRef.typeArguments); | 562 reference: refId, typeArguments: typeRef.typeArguments); |
558 } else { | 563 } else { |
559 b.redirectedConstructor = typeRef; | 564 b.redirectedConstructor = typeRef; |
560 } | 565 } |
561 } else { | 566 } else { |
562 b.redirectedConstructorName = | 567 b.redirectedConstructorName = redirectedConstructor.name; |
563 executableElement.redirectedConstructor.name; | |
564 } | 568 } |
565 } | 569 } |
566 if (executableElement.isConst && | 570 if (executableElement.isConst && |
567 executableElement.constantInitializers != null) { | 571 executableElement.constantInitializers != null) { |
568 Set<String> constructorParameterNames = | 572 Set<String> constructorParameterNames = |
569 executableElement.parameters.map((p) => p.name).toSet(); | 573 executableElement.parameters.map((p) => p.name).toSet(); |
570 b.constantInitializers = executableElement.constantInitializers | 574 b.constantInitializers = executableElement.constantInitializers |
571 .map((ConstructorInitializer initializer) => | 575 .map((ConstructorInitializer initializer) => |
572 serializeConstructorInitializer( | 576 serializeConstructorInitializer( |
573 initializer, | 577 initializer, |
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 exportNames.add(new LinkedExportNameBuilder( | 1283 exportNames.add(new LinkedExportNameBuilder( |
1280 name: name, | 1284 name: name, |
1281 dependency: serializeDependency(dependentLibrary), | 1285 dependency: serializeDependency(dependentLibrary), |
1282 unit: unit, | 1286 unit: unit, |
1283 kind: kind)); | 1287 kind: kind)); |
1284 } | 1288 } |
1285 pb.exportNames = exportNames; | 1289 pb.exportNames = exportNames; |
1286 return pb; | 1290 return pb; |
1287 } | 1291 } |
1288 } | 1292 } |
OLD | NEW |