Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(388)

Side by Side Diff: pkg/analyzer/lib/src/summary/summarize_elements.dart

Issue 1699243003: Serialize and resynthesize unresolved constant instance creations. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Add more tests. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/summary/resynthesize.dart ('k') | pkg/analyzer/test/src/summary/resynthesize_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698