| 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/member.dart'; |
| (...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1060 throw new StateError('Unexpected annotation nameElement type:' | 1060 throw new StateError('Unexpected annotation nameElement type:' |
| 1061 ' ${nameElement.runtimeType}'); | 1061 ' ${nameElement.runtimeType}'); |
| 1062 } | 1062 } |
| 1063 serializeInstanceCreation(constructor, annotation.arguments); | 1063 serializeInstanceCreation(constructor, annotation.arguments); |
| 1064 } | 1064 } |
| 1065 } | 1065 } |
| 1066 | 1066 |
| 1067 @override | 1067 @override |
| 1068 EntityRefBuilder serializeConstructorName( | 1068 EntityRefBuilder serializeConstructorName( |
| 1069 TypeName type, SimpleIdentifier name) { | 1069 TypeName type, SimpleIdentifier name) { |
| 1070 EntityRefBuilder typeRef = serializer.serializeTypeRef(type.type, null); | 1070 EntityRefBuilder typeRef = serializeType(type); |
| 1071 if (name == null) { | 1071 if (name == null) { |
| 1072 return typeRef; | 1072 return typeRef; |
| 1073 } else { | 1073 } else { |
| 1074 LinkedReference typeLinkedRef = | 1074 LinkedReference typeLinkedRef = |
| 1075 serializer.linkedReferences[typeRef.reference]; | 1075 serializer.linkedReferences[typeRef.reference]; |
| 1076 int refId = serializer.serializeUnlinkedReference( | 1076 int refId = serializer.serializeUnlinkedReference( |
| 1077 name.name, ReferenceKind.constructor, | 1077 name.name, |
| 1078 prefixReference: typeRef.reference, unit: typeLinkedRef.unit); | 1078 name.staticElement != null |
| 1079 ? ReferenceKind.constructor |
| 1080 : ReferenceKind.unresolved, |
| 1081 prefixReference: typeRef.reference, |
| 1082 unit: typeLinkedRef.unit); |
| 1079 return new EntityRefBuilder( | 1083 return new EntityRefBuilder( |
| 1080 reference: refId, typeArguments: typeRef.typeArguments); | 1084 reference: refId, typeArguments: typeRef.typeArguments); |
| 1081 } | 1085 } |
| 1082 } | 1086 } |
| 1083 | 1087 |
| 1084 EntityRefBuilder serializeIdentifier(Identifier identifier, | 1088 EntityRefBuilder serializeIdentifier(Identifier identifier, |
| 1085 {int prefixReference: 0}) { | 1089 {int prefixReference: 0}) { |
| 1086 Element element = identifier.staticElement; | 1090 Element element = identifier.staticElement; |
| 1087 // Unresolved identifier. | 1091 // Unresolved identifier. |
| 1088 if (element == null) { | 1092 if (element == null) { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1144 int prefixRef = serializer._getElementReferenceId(prefixElement); | 1148 int prefixRef = serializer._getElementReferenceId(prefixElement); |
| 1145 int lengthRef = serializer._getLengthPropertyReference(prefixRef); | 1149 int lengthRef = serializer._getLengthPropertyReference(prefixRef); |
| 1146 return new EntityRefBuilder(reference: lengthRef); | 1150 return new EntityRefBuilder(reference: lengthRef); |
| 1147 } | 1151 } |
| 1148 return new EntityRefBuilder( | 1152 return new EntityRefBuilder( |
| 1149 reference: serializer._getElementReferenceId(element)); | 1153 reference: serializer._getElementReferenceId(element)); |
| 1150 } | 1154 } |
| 1151 | 1155 |
| 1152 @override | 1156 @override |
| 1153 EntityRefBuilder serializeType(TypeName typeName) { | 1157 EntityRefBuilder serializeType(TypeName typeName) { |
| 1158 if (typeName != null) { |
| 1159 DartType type = typeName.type; |
| 1160 if (type == null || type.isUndefined) { |
| 1161 return serializeIdentifier(typeName.name); |
| 1162 } |
| 1163 } |
| 1154 DartType type = typeName != null ? typeName.type : DynamicTypeImpl.instance; | 1164 DartType type = typeName != null ? typeName.type : DynamicTypeImpl.instance; |
| 1155 return serializer.serializeTypeRef(type, null); | 1165 return serializer.serializeTypeRef(type, null); |
| 1156 } | 1166 } |
| 1157 } | 1167 } |
| 1158 | 1168 |
| 1159 /** | 1169 /** |
| 1160 * Instances of this class keep track of intermediate state during | 1170 * Instances of this class keep track of intermediate state during |
| 1161 * serialization of a single library. | 1171 * serialization of a single library. |
| 1162 */ | 1172 */ |
| 1163 class _LibrarySerializer { | 1173 class _LibrarySerializer { |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1339 exportNames.add(new LinkedExportNameBuilder( | 1349 exportNames.add(new LinkedExportNameBuilder( |
| 1340 name: name, | 1350 name: name, |
| 1341 dependency: serializeDependency(dependentLibrary), | 1351 dependency: serializeDependency(dependentLibrary), |
| 1342 unit: unit, | 1352 unit: unit, |
| 1343 kind: kind)); | 1353 kind: kind)); |
| 1344 } | 1354 } |
| 1345 pb.exportNames = exportNames; | 1355 pb.exportNames = exportNames; |
| 1346 return pb; | 1356 return pb; |
| 1347 } | 1357 } |
| 1348 } | 1358 } |
| OLD | NEW |