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

Side by Side Diff: pkg/analyzer/test/src/summary/pub_summary_test.dart

Issue 2227393002: Add support for package cycles linking, more tests. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Add TODOs Created 4 years, 4 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
« no previous file with comments | « pkg/analyzer/lib/src/summary/pub_summary.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 import 'package:analyzer/dart/element/element.dart'; 5 import 'package:analyzer/dart/element/element.dart';
6 import 'package:analyzer/file_system/file_system.dart'; 6 import 'package:analyzer/file_system/file_system.dart';
7 import 'package:analyzer/source/package_map_resolver.dart'; 7 import 'package:analyzer/source/package_map_resolver.dart';
8 import 'package:analyzer/src/generated/sdk.dart'; 8 import 'package:analyzer/src/generated/sdk.dart';
9 import 'package:analyzer/src/generated/source.dart'; 9 import 'package:analyzer/src/generated/source.dart';
10 import 'package:analyzer/src/summary/idl.dart'; 10 import 'package:analyzer/src/summary/idl.dart';
(...skipping 17 matching lines...) Expand all
28 28
29 static Map<DartSdk, PackageBundle> sdkBundleMap = <DartSdk, PackageBundle>{}; 29 static Map<DartSdk, PackageBundle> sdkBundleMap = <DartSdk, PackageBundle>{};
30 30
31 PubSummaryManager manager; 31 PubSummaryManager manager;
32 32
33 void setUp() { 33 void setUp() {
34 super.setUp(); 34 super.setUp();
35 manager = new PubSummaryManager(resourceProvider, '_.temp'); 35 manager = new PubSummaryManager(resourceProvider, '_.temp');
36 } 36 }
37 37
38 test_getLinkedBundles_noCycles() async { 38 test_getLinkedBundles_hasCycle() async {
39 resourceProvider.newFile( 39 resourceProvider.newFile(
40 '$CACHE/aaa/lib/a.dart', 40 '$CACHE/aaa/lib/a.dart',
41 ''' 41 '''
42 import 'package:bbb/b.dart';
43 class A {}
44 int a1;
45 B a2;
46 ''');
47 resourceProvider.newFile(
48 '$CACHE/bbb/lib/b.dart',
49 '''
50 import 'package:ccc/c.dart';
51 class B {}
52 C b;
53 ''');
54 resourceProvider.newFile(
55 '$CACHE/ccc/lib/c.dart',
56 '''
57 import 'package:aaa/a.dart';
58 import 'package:ddd/d.dart';
59 class C {}
60 A c1;
61 D c2;
62 ''');
63 resourceProvider.newFile(
64 '$CACHE/ddd/lib/d.dart',
65 '''
66 class D {}
67 String d;
68 ''');
69
70 // Configure packages resolution.
71 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib');
72 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib');
73 Folder libFolderC = resourceProvider.newFolder('$CACHE/ccc/lib');
74 Folder libFolderD = resourceProvider.newFolder('$CACHE/ddd/lib');
75 context.sourceFactory = new SourceFactory(<UriResolver>[
76 sdkResolver,
77 resourceResolver,
78 new PackageMapUriResolver(resourceProvider, {
79 'aaa': [libFolderA],
80 'bbb': [libFolderB],
81 'ccc': [libFolderC],
82 'ddd': [libFolderD],
83 })
84 ]);
85
86 // Ensure unlinked bundles.
87 manager.getUnlinkedBundles(context);
88 await manager.onUnlinkedComplete;
89
90 // Now we should be able to get linked bundles.
91 PackageBundle sdkBundle = getSdkBundle(sdk);
92 List<LinkedPubPackage> linkedPackages =
93 manager.getLinkedBundles(context, sdkBundle);
94 expect(linkedPackages, hasLength(4));
95
96 // package:aaa
97 {
98 LinkedPubPackage linkedPackage = linkedPackages
99 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
100 expect(linkedPackage.linked.linkedLibraryUris, ['package:aaa/a.dart']);
101 _assertHasLinkedVariable(linkedPackage, 'a1', 'int', 'dart:core');
102 _assertHasLinkedVariable(linkedPackage, 'a2', 'B', 'package:bbb/b.dart');
103 }
104
105 // package:bbb
106 {
107 LinkedPubPackage linkedPackage = linkedPackages
108 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb');
109 expect(linkedPackage.linked.linkedLibraryUris, ['package:bbb/b.dart']);
110 _assertHasLinkedVariable(linkedPackage, 'b', 'C', 'package:ccc/c.dart');
111 }
112
113 // package:ccc
114 {
115 LinkedPubPackage linkedPackage = linkedPackages
116 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc');
117 expect(linkedPackage.linked.linkedLibraryUris, ['package:ccc/c.dart']);
118 _assertHasLinkedVariable(linkedPackage, 'c1', 'A', 'package:aaa/a.dart');
119 _assertHasLinkedVariable(linkedPackage, 'c2', 'D', 'package:ddd/d.dart');
120 }
121
122 // package:ddd
123 {
124 LinkedPubPackage linkedPackage = linkedPackages
125 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ddd');
126 expect(linkedPackage.linked.linkedLibraryUris, ['package:ddd/d.dart']);
127 _assertHasLinkedVariable(linkedPackage, 'd', 'String', 'dart:core');
128 }
129 }
130
131 test_getLinkedBundles_missingBundle() async {
132 resourceProvider.newFile(
133 '$CACHE/aaa/lib/a.dart',
134 '''
135 int a;
136 ''');
137 resourceProvider.newFile(
138 '$CACHE/bbb/lib/b.dart',
139 '''
140 import 'package:ccc/c.dart';
141 C b;
142 ''');
143
144 // Configure packages resolution.
145 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib');
146 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib');
147 context.sourceFactory = new SourceFactory(<UriResolver>[
148 sdkResolver,
149 resourceResolver,
150 new PackageMapUriResolver(resourceProvider, {
151 'aaa': [libFolderA],
152 'bbb': [libFolderB],
153 })
154 ]);
155
156 // Ensure unlinked bundles.
157 manager.getUnlinkedBundles(context);
158 await manager.onUnlinkedComplete;
159
160 // Try to link.
161 // Only 'aaa' can be linked, because 'bbb' references not available 'ccc'.
162 PackageBundle sdkBundle = getSdkBundle(sdk);
163 List<LinkedPubPackage> linkedPackages =
164 manager.getLinkedBundles(context, sdkBundle);
165 expect(linkedPackages, hasLength(1));
166
167 // package:aaa
168 {
169 LinkedPubPackage linkedPackage = linkedPackages
170 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
171 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core');
172 }
173 }
174
175 test_getLinkedBundles_missingBundle_chained() async {
176 resourceProvider.newFile(
177 '$CACHE/aaa/lib/a.dart',
178 '''
179 import 'package:bbb/b.dart';
180 int a;
181 ''');
182 resourceProvider.newFile(
183 '$CACHE/bbb/lib/b.dart',
184 '''
185 import 'package:ccc/c.dart';
186 int b;
187 ''');
188
189 // Configure packages resolution.
190 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib');
191 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib');
192 context.sourceFactory = new SourceFactory(<UriResolver>[
193 sdkResolver,
194 resourceResolver,
195 new PackageMapUriResolver(resourceProvider, {
196 'aaa': [libFolderA],
197 'bbb': [libFolderB],
198 })
199 ]);
200
201 // Ensure unlinked bundles.
202 manager.getUnlinkedBundles(context);
203 await manager.onUnlinkedComplete;
204
205 // Try to link.
206 // No linked libraries, because 'aaa' needs 'bbb', and 'bbb' needs 'ccc'.
207 // But 'ccc' is not available, so the whole chain cannot be linked.
208 PackageBundle sdkBundle = getSdkBundle(sdk);
209 List<LinkedPubPackage> linkedPackages =
210 manager.getLinkedBundles(context, sdkBundle);
211 expect(linkedPackages, isEmpty);
212 }
213
214 test_getLinkedBundles_missingLibrary() async {
215 resourceProvider.newFile(
216 '$CACHE/aaa/lib/a.dart',
217 '''
218 import 'package:bbb/b2.dart';
219 int a;
220 ''');
221 resourceProvider.newFile(
222 '$CACHE/bbb/lib/b.dart',
223 '''
224 class B {}
225 int b = 42;
226 ''');
227
228 // Configure packages resolution.
229 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib');
230 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib');
231 context.sourceFactory = new SourceFactory(<UriResolver>[
232 sdkResolver,
233 resourceResolver,
234 new PackageMapUriResolver(resourceProvider, {
235 'aaa': [libFolderA],
236 'bbb': [libFolderB],
237 })
238 ]);
239
240 // Ensure unlinked bundles.
241 manager.getUnlinkedBundles(context);
242 await manager.onUnlinkedComplete;
243
244 // Try to link.
245 // Only 'bbb', because 'aaa' references 'package:bbb/b2.dart', which does
246 // not exist in the bundle 'bbb'.
247 PackageBundle sdkBundle = getSdkBundle(sdk);
248 List<LinkedPubPackage> linkedPackages =
249 manager.getLinkedBundles(context, sdkBundle);
250 expect(linkedPackages, hasLength(1));
251
252 // package:bbb
253 {
254 LinkedPubPackage linkedPackage = linkedPackages
255 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb');
256 _assertHasLinkedVariable(linkedPackage, 'b', 'int', 'dart:core');
257 }
258 }
259
260 test_getLinkedBundles_missingLibrary_hasCycle() async {
261 resourceProvider.newFile(
262 '$CACHE/aaa/lib/a.dart',
263 '''
264 import 'package:bbb/b.dart';
265 int a;
266 ''');
267 resourceProvider.newFile(
268 '$CACHE/bbb/lib/b.dart',
269 '''
270 import 'package:aaa/a.dart';
271 import 'package:ccc/c2.dart';
272 class B {}
273 int b;
274 ''');
275 resourceProvider.newFile(
276 '$CACHE/ccc/lib/c.dart',
277 '''
278 class C {}
279 int c;
280 ''');
281
282 // Configure packages resolution.
283 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib');
284 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib');
285 Folder libFolderC = resourceProvider.newFolder('$CACHE/ccc/lib');
286 context.sourceFactory = new SourceFactory(<UriResolver>[
287 sdkResolver,
288 resourceResolver,
289 new PackageMapUriResolver(resourceProvider, {
290 'aaa': [libFolderA],
291 'bbb': [libFolderB],
292 'ccc': [libFolderC],
293 })
294 ]);
295
296 // Ensure unlinked bundles.
297 manager.getUnlinkedBundles(context);
298 await manager.onUnlinkedComplete;
299
300 // Try to link.
301 // Only 'ccc' is linked.
302 // The 'aaa' + 'bbb' cycle cannot be linked because 'bbb' references
303 // 'package:ccc/c2.dart', which does not exist in the bundle 'ccc'.
304 PackageBundle sdkBundle = getSdkBundle(sdk);
305 List<LinkedPubPackage> linkedPackages =
306 manager.getLinkedBundles(context, sdkBundle);
307 expect(linkedPackages, hasLength(1));
308
309 // package:ccc
310 {
311 LinkedPubPackage linkedPackage = linkedPackages
312 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc');
313 _assertHasLinkedVariable(linkedPackage, 'c', 'int', 'dart:core');
314 }
315 }
316
317 test_getLinkedBundles_noCycle() async {
318 resourceProvider.newFile(
319 '$CACHE/aaa/lib/a.dart',
320 '''
42 class A {} 321 class A {}
43 int a; 322 int a;
44 '''); 323 ''');
45 resourceProvider.newFile( 324 resourceProvider.newFile(
46 '$CACHE/bbb/lib/b.dart', 325 '$CACHE/bbb/lib/b.dart',
47 ''' 326 '''
48 import 'package:aaa/a.dart'; 327 import 'package:aaa/a.dart';
49 A b; 328 A b;
50 '''); 329 ''');
51 330
(...skipping 16 matching lines...) Expand all
68 // Now we should be able to get linked bundles. 347 // Now we should be able to get linked bundles.
69 PackageBundle sdkBundle = getSdkBundle(sdk); 348 PackageBundle sdkBundle = getSdkBundle(sdk);
70 List<LinkedPubPackage> linkedPackages = 349 List<LinkedPubPackage> linkedPackages =
71 manager.getLinkedBundles(context, sdkBundle); 350 manager.getLinkedBundles(context, sdkBundle);
72 expect(linkedPackages, hasLength(2)); 351 expect(linkedPackages, hasLength(2));
73 352
74 // package:aaa 353 // package:aaa
75 { 354 {
76 LinkedPubPackage linkedPackage = linkedPackages 355 LinkedPubPackage linkedPackage = linkedPackages
77 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 356 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
78 PackageBundle unlinked = linkedPackage.unlinked; 357 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core');
79 PackageBundle linked = linkedPackage.linked;
80 expect(unlinked, isNotNull);
81 expect(linked, isNotNull);
82 expect(unlinked.unlinkedUnitUris, ['package:aaa/a.dart']);
83 expect(linked.linkedLibraryUris, ['package:aaa/a.dart']);
84 // Prepare linked `package:aaa/a.dart`.
85 UnlinkedUnit unlinkedUnitA = unlinked.unlinkedUnits[0];
86 LinkedLibrary linkedLibraryA = linked.linkedLibraries[0];
87 LinkedUnit linkedUnitA = linkedLibraryA.units[0];
88 // int a;
89 {
90 UnlinkedVariable a = unlinkedUnitA.variables[0];
91 expect(a.name, 'a');
92 _assertLinkedNameReference(unlinkedUnitA, linkedLibraryA, linkedUnitA,
93 a.type.reference, 'int', 'dart:core');
94 }
95 } 358 }
96 359
97 // package:bbb 360 // package:bbb
98 { 361 {
99 LinkedPubPackage linkedPackage = linkedPackages 362 LinkedPubPackage linkedPackage = linkedPackages
100 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb'); 363 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb');
101 PackageBundle unlinked = linkedPackage.unlinked; 364 _assertHasLinkedVariable(linkedPackage, 'b', 'A', 'package:aaa/a.dart');
102 PackageBundle linked = linkedPackage.linked;
103 expect(unlinked, isNotNull);
104 expect(linked, isNotNull);
105 expect(unlinked.unlinkedUnitUris, ['package:bbb/b.dart']);
106 expect(linked.linkedLibraryUris, ['package:bbb/b.dart']);
107 // Prepare linked `package:bbb/b.dart`.
108 UnlinkedUnit unlinkedUnit = unlinked.unlinkedUnits[0];
109 LinkedLibrary linkedLibrary = linked.linkedLibraries[0];
110 LinkedUnit linkedUnit = linkedLibrary.units[0];
111 // A b;
112 {
113 UnlinkedVariable b = unlinkedUnit.variables[0];
114 expect(b.name, 'b');
115 _assertLinkedNameReference(unlinkedUnit, linkedLibrary, linkedUnit,
116 b.type.reference, 'A', 'package:aaa/a.dart');
117 }
118 } 365 }
119 } 366 }
120 367
368 test_getLinkedBundles_noCycle_relativeUri() async {
369 resourceProvider.newFile(
370 '$CACHE/aaa/lib/a.dart',
371 '''
372 import 'src/a2.dart';
373 A a;
374 ''');
375 resourceProvider.newFile(
376 '$CACHE/aaa/lib/src/a2.dart',
377 '''
378 class A {}
379 ''');
380
381 // Configure packages resolution.
382 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib');
383 context.sourceFactory = new SourceFactory(<UriResolver>[
384 sdkResolver,
385 resourceResolver,
386 new PackageMapUriResolver(resourceProvider, {
387 'aaa': [libFolderA],
388 })
389 ]);
390
391 // Ensure unlinked bundles.
392 manager.getUnlinkedBundles(context);
393 await manager.onUnlinkedComplete;
394
395 // Link.
396 PackageBundle sdkBundle = getSdkBundle(sdk);
397 List<LinkedPubPackage> linkedPackages =
398 manager.getLinkedBundles(context, sdkBundle);
399 expect(linkedPackages, hasLength(1));
400
401 // package:aaa
402 {
403 LinkedPubPackage linkedPackage = linkedPackages
404 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
405 _assertHasLinkedVariable(linkedPackage, 'a', 'A', 'src/a2.dart');
406 }
407 }
408
409 test_getLinkedBundles_wrongScheme() async {
410 resourceProvider.newFile(
411 '$CACHE/aaa/lib/a.dart',
412 '''
413 import 'xxx:yyy/zzz.dart';
414 Z a;
415 ''');
416
417 // Configure packages resolution.
418 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib');
419 context.sourceFactory = new SourceFactory(<UriResolver>[
420 sdkResolver,
421 resourceResolver,
422 new PackageMapUriResolver(resourceProvider, {
423 'aaa': [libFolderA],
424 })
425 ]);
426
427 // Ensure unlinked bundles.
428 manager.getUnlinkedBundles(context);
429 await manager.onUnlinkedComplete;
430
431 // Try to link.
432 // The package 'aaa' cannot be linked because it uses not 'dart' or
433 // 'package' import URI scheme.
434 PackageBundle sdkBundle = getSdkBundle(sdk);
435 List<LinkedPubPackage> linkedPackages =
436 manager.getLinkedBundles(context, sdkBundle);
437 expect(linkedPackages, hasLength(0));
438 }
439
440 test_getPackageName() {
441 String getPackageName(String uriStr) {
442 return PubSummaryManager.getPackageName(uriStr);
443 }
444 expect(getPackageName('package:foo/bar.dart'), 'foo');
445 expect(getPackageName('package:foo/bar/baz.dart'), 'foo');
446 expect(getPackageName('wrong:foo/bar.dart'), isNull);
447 expect(getPackageName('package:foo'), isNull);
448 }
449
121 test_getUnlinkedBundles() async { 450 test_getUnlinkedBundles() async {
122 // Create package files. 451 // Create package files.
123 resourceProvider.newFile( 452 resourceProvider.newFile(
124 '$CACHE/aaa/lib/a.dart', 453 '$CACHE/aaa/lib/a.dart',
125 ''' 454 '''
126 class A {} 455 class A {}
127 '''); 456 ''');
128 resourceProvider.newFile( 457 resourceProvider.newFile(
129 '$CACHE/aaa/lib/src/a2.dart', 458 '$CACHE/aaa/lib/src/a2.dart',
130 ''' 459 '''
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 expect( 546 expect(
218 PubSummaryManager.isPathInPubCache( 547 PubSummaryManager.isPathInPubCache(
219 pathos.windows, r'C:\Users\user\Sources\Dart\foo\lib\bar.dart'), 548 pathos.windows, r'C:\Users\user\Sources\Dart\foo\lib\bar.dart'),
220 isFalse); 549 isFalse);
221 } 550 }
222 551
223 void _assertFileExists(Folder folder, String fileName) { 552 void _assertFileExists(Folder folder, String fileName) {
224 expect(folder.getChildAssumingFile(fileName).exists, isTrue); 553 expect(folder.getChildAssumingFile(fileName).exists, isTrue);
225 } 554 }
226 555
227 void _assertLinkedNameReference( 556 void _assertHasLinkedVariable(
228 UnlinkedUnit unlinkedUnit, 557 LinkedPubPackage linkedPackage,
229 LinkedLibrary linkedLibrary, 558 String variableName,
230 LinkedUnit linkedUnit, 559 String expectedTypeName,
231 int typeNameReference, 560 String expectedTypeNameUri) {
232 String expectedName, 561 PackageBundle unlinked = linkedPackage.unlinked;
233 String expectedDependencyUri) { 562 PackageBundle linked = linkedPackage.linked;
234 expect(unlinkedUnit.references[typeNameReference].name, expectedName); 563 expect(unlinked, isNotNull);
235 int typeNameDependency = 564 expect(linked, isNotNull);
236 linkedUnit.references[typeNameReference].dependency; 565 for (int i = 0; i < unlinked.unlinkedUnitUris.length; i++) {
237 expect(linkedLibrary.dependencies[typeNameDependency].uri, 566 String unlinkedUnitUri = unlinked.unlinkedUnitUris[i];
238 expectedDependencyUri); 567 UnlinkedUnit unlinkedUnit = unlinked.unlinkedUnits[i];
568 for (UnlinkedVariable v in unlinkedUnit.variables) {
569 if (v.name == variableName) {
570 int typeNameReference = v.type.reference;
571 expect(unlinkedUnit.references[typeNameReference].name,
572 expectedTypeName);
573 for (int j = 0; j < linked.linkedLibraryUris.length; j++) {
574 String linkedLibraryUri = linked.linkedLibraryUris[j];
575 if (linkedLibraryUri == unlinkedUnitUri) {
576 LinkedLibrary linkedLibrary = linked.linkedLibraries[j];
577 LinkedUnit linkedUnit = linkedLibrary.units.single;
578 int typeNameDependency =
579 linkedUnit.references[typeNameReference].dependency;
580 expect(linkedLibrary.dependencies[typeNameDependency].uri,
581 expectedTypeNameUri);
582 return;
583 }
584 }
585 fail('Cannot find linked unit for $variableName in $linkedPackage');
586 }
587 }
588 }
589 fail('Cannot find variable $variableName in $linkedPackage');
239 } 590 }
240 591
241 /** 592 /**
242 * Compute element based summary bundle for the given [sdk]. 593 * Compute element based summary bundle for the given [sdk].
243 */ 594 */
244 static PackageBundle getSdkBundle(DartSdk sdk) { 595 static PackageBundle getSdkBundle(DartSdk sdk) {
245 return sdkBundleMap.putIfAbsent(sdk, () { 596 return sdkBundleMap.putIfAbsent(sdk, () {
246 PackageBundleAssembler assembler = new PackageBundleAssembler(); 597 PackageBundleAssembler assembler = new PackageBundleAssembler();
247 for (SdkLibrary sdkLibrary in sdk.sdkLibraries) { 598 for (SdkLibrary sdkLibrary in sdk.sdkLibraries) {
248 String uriStr = sdkLibrary.shortName; 599 String uriStr = sdkLibrary.shortName;
249 Source source = sdk.mapDartUri(uriStr); 600 Source source = sdk.mapDartUri(uriStr);
250 LibraryElement libraryElement = 601 LibraryElement libraryElement =
251 sdk.context.computeLibraryElement(source); 602 sdk.context.computeLibraryElement(source);
252 assembler.serializeLibraryElement(libraryElement); 603 assembler.serializeLibraryElement(libraryElement);
253 } 604 }
254 List<int> bytes = assembler.assemble().toBuffer(); 605 List<int> bytes = assembler.assemble().toBuffer();
255 return new PackageBundle.fromBuffer(bytes); 606 return new PackageBundle.fromBuffer(bytes);
256 }); 607 });
257 } 608 }
258 609
259 static PackageBundle _getBundleByPackageName( 610 static PackageBundle _getBundleByPackageName(
260 Map<PubPackage, PackageBundle> bundles, String name) { 611 Map<PubPackage, PackageBundle> bundles, String name) {
261 PubPackage package = 612 PubPackage package =
262 bundles.keys.singleWhere((package) => package.name == name); 613 bundles.keys.singleWhere((package) => package.name == name);
263 return bundles[package]; 614 return bundles[package];
264 } 615 }
265 } 616 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/summary/pub_summary.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698