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

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

Issue 2242963002: Add DartSdk.getLinkedBundle() and use it in PubSummaryManager. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: 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/test/src/context/mock_sdk.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';
6 import 'package:analyzer/file_system/file_system.dart'; 5 import 'package:analyzer/file_system/file_system.dart';
7 import 'package:analyzer/source/package_map_resolver.dart'; 6 import 'package:analyzer/source/package_map_resolver.dart';
8 import 'package:analyzer/src/generated/sdk.dart';
9 import 'package:analyzer/src/generated/source.dart'; 7 import 'package:analyzer/src/generated/source.dart';
10 import 'package:analyzer/src/summary/format.dart'; 8 import 'package:analyzer/src/summary/format.dart';
11 import 'package:analyzer/src/summary/idl.dart'; 9 import 'package:analyzer/src/summary/idl.dart';
12 import 'package:analyzer/src/summary/pub_summary.dart'; 10 import 'package:analyzer/src/summary/pub_summary.dart';
13 import 'package:analyzer/src/summary/summarize_elements.dart'; 11 import 'package:analyzer/src/summary/summarize_elements.dart';
14 import 'package:analyzer/src/util/fast_uri.dart'; 12 import 'package:analyzer/src/util/fast_uri.dart';
15 import 'package:path/path.dart' as pathos; 13 import 'package:path/path.dart' as pathos;
16 import 'package:unittest/unittest.dart' hide ERROR; 14 import 'package:unittest/unittest.dart' hide ERROR;
17 15
18 import '../../reflective_tests.dart'; 16 import '../../reflective_tests.dart';
19 import '../../utils.dart'; 17 import '../../utils.dart';
20 import '../context/abstract_context.dart'; 18 import '../context/abstract_context.dart';
21 19
22 main() { 20 main() {
23 initializeTestEnvironment(); 21 initializeTestEnvironment();
24 runReflectiveTests(PubSummaryManagerTest); 22 runReflectiveTests(PubSummaryManagerTest);
25 } 23 }
26 24
27 @reflectiveTest 25 @reflectiveTest
28 class PubSummaryManagerTest extends AbstractContextTest { 26 class PubSummaryManagerTest extends AbstractContextTest {
29 static const String CACHE = '/home/.pub-cache/hosted/pub.dartlang.org'; 27 static const String CACHE = '/home/.pub-cache/hosted/pub.dartlang.org';
30 28
31 static Map<DartSdk, PackageBundle> sdkBundleMap = <DartSdk, PackageBundle>{};
32
33 PubSummaryManager manager; 29 PubSummaryManager manager;
34 30
35 void setUp() { 31 void setUp() {
36 super.setUp(); 32 super.setUp();
37 manager = new PubSummaryManager(resourceProvider, '_.temp'); 33 manager = new PubSummaryManager(resourceProvider, '_.temp');
38 } 34 }
39 35
40 test_computeSdkExtension() async { 36 test_computeSdkExtension() async {
41 // Create package files. 37 // Create package files.
42 resourceProvider.newFile( 38 resourceProvider.newFile(
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 82 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib');
87 context.sourceFactory = new SourceFactory(<UriResolver>[ 83 context.sourceFactory = new SourceFactory(<UriResolver>[
88 sdkResolver, 84 sdkResolver,
89 resourceResolver, 85 resourceResolver,
90 new PackageMapUriResolver(resourceProvider, { 86 new PackageMapUriResolver(resourceProvider, {
91 'aaa': [libFolderA], 87 'aaa': [libFolderA],
92 'bbb': [libFolderB], 88 'bbb': [libFolderB],
93 }) 89 })
94 ]); 90 ]);
95 91
96 PackageBundle sdkBundle = getSdkBundle(sdk); 92 PackageBundle sdkBundle = sdk.getLinkedBundle();
97 PackageBundle bundle = manager.computeSdkExtension(context, sdkBundle); 93 PackageBundle bundle = manager.computeSdkExtension(context, sdkBundle);
98 expect(bundle, isNotNull); 94 expect(bundle, isNotNull);
99 expect(bundle.linkedLibraryUris, ['dart:aaa.internal']); 95 expect(bundle.linkedLibraryUris, ['dart:aaa.internal']);
100 expect(bundle.unlinkedUnitUris, [ 96 expect(bundle.unlinkedUnitUris, [
101 'dart:aaa.internal', 97 'dart:aaa.internal',
102 'dart:aaa.internal/src/p1.dart', 98 'dart:aaa.internal/src/p1.dart',
103 'dart:aaa.internal/src/p2.dart' 99 'dart:aaa.internal/src/p2.dart'
104 ]); 100 ]);
105 expect(bundle.unlinkedUnits, hasLength(3)); 101 expect(bundle.unlinkedUnits, hasLength(3));
106 expect(bundle.unlinkedUnits[0].classes.map((c) => c.name), ['ExtA']); 102 expect(bundle.unlinkedUnits[0].classes.map((c) => c.name), ['ExtA']);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 'ccc': [libFolderC], 192 'ccc': [libFolderC],
197 'ddd': [libFolderD], 193 'ddd': [libFolderD],
198 }) 194 })
199 ]); 195 ]);
200 196
201 // Ensure unlinked bundles. 197 // Ensure unlinked bundles.
202 manager.getUnlinkedBundles(context); 198 manager.getUnlinkedBundles(context);
203 await manager.onUnlinkedComplete; 199 await manager.onUnlinkedComplete;
204 200
205 // Now we should be able to get linked bundles. 201 // Now we should be able to get linked bundles.
206 PackageBundle sdkBundle = getSdkBundle(sdk); 202 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
207 List<LinkedPubPackage> linkedPackages =
208 manager.getLinkedBundles(context, sdkBundle);
209 expect(linkedPackages, hasLength(4)); 203 expect(linkedPackages, hasLength(4));
210 204
211 // package:aaa 205 // package:aaa
212 { 206 {
213 LinkedPubPackage linkedPackage = linkedPackages 207 LinkedPubPackage linkedPackage = linkedPackages
214 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 208 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
215 expect(linkedPackage.linked.linkedLibraryUris, ['package:aaa/a.dart']); 209 expect(linkedPackage.linked.linkedLibraryUris, ['package:aaa/a.dart']);
216 _assertHasLinkedVariable(linkedPackage, 'a1', 'int', 'dart:core'); 210 _assertHasLinkedVariable(linkedPackage, 'a1', 'int', 'dart:core');
217 _assertHasLinkedVariable(linkedPackage, 'a2', 'B', 'package:bbb/b.dart'); 211 _assertHasLinkedVariable(linkedPackage, 'a2', 'B', 'package:bbb/b.dart');
218 } 212 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 'bbb': [libFolderB], 261 'bbb': [libFolderB],
268 }) 262 })
269 ]); 263 ]);
270 264
271 // Ensure unlinked bundles. 265 // Ensure unlinked bundles.
272 manager.getUnlinkedBundles(context); 266 manager.getUnlinkedBundles(context);
273 await manager.onUnlinkedComplete; 267 await manager.onUnlinkedComplete;
274 268
275 // Try to link. 269 // Try to link.
276 // Only 'aaa' can be linked, because 'bbb' references not available 'ccc'. 270 // Only 'aaa' can be linked, because 'bbb' references not available 'ccc'.
277 PackageBundle sdkBundle = getSdkBundle(sdk); 271 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
278 List<LinkedPubPackage> linkedPackages =
279 manager.getLinkedBundles(context, sdkBundle);
280 expect(linkedPackages, hasLength(1)); 272 expect(linkedPackages, hasLength(1));
281 273
282 // package:aaa 274 // package:aaa
283 { 275 {
284 LinkedPubPackage linkedPackage = linkedPackages 276 LinkedPubPackage linkedPackage = linkedPackages
285 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 277 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
286 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core'); 278 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core');
287 } 279 }
288 } 280 }
289 281
(...skipping 23 matching lines...) Expand all
313 }) 305 })
314 ]); 306 ]);
315 307
316 // Ensure unlinked bundles. 308 // Ensure unlinked bundles.
317 manager.getUnlinkedBundles(context); 309 manager.getUnlinkedBundles(context);
318 await manager.onUnlinkedComplete; 310 await manager.onUnlinkedComplete;
319 311
320 // Try to link. 312 // Try to link.
321 // No linked libraries, because 'aaa' needs 'bbb', and 'bbb' needs 'ccc'. 313 // No linked libraries, because 'aaa' needs 'bbb', and 'bbb' needs 'ccc'.
322 // But 'ccc' is not available, so the whole chain cannot be linked. 314 // But 'ccc' is not available, so the whole chain cannot be linked.
323 PackageBundle sdkBundle = getSdkBundle(sdk); 315 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
324 List<LinkedPubPackage> linkedPackages =
325 manager.getLinkedBundles(context, sdkBundle);
326 expect(linkedPackages, isEmpty); 316 expect(linkedPackages, isEmpty);
327 } 317 }
328 318
329 test_getLinkedBundles_missingLibrary() async { 319 test_getLinkedBundles_missingLibrary() async {
330 resourceProvider.newFile( 320 resourceProvider.newFile(
331 '$CACHE/aaa/lib/a.dart', 321 '$CACHE/aaa/lib/a.dart',
332 ''' 322 '''
333 import 'package:bbb/b2.dart'; 323 import 'package:bbb/b2.dart';
334 int a; 324 int a;
335 '''); 325 ''');
(...skipping 16 matching lines...) Expand all
352 }) 342 })
353 ]); 343 ]);
354 344
355 // Ensure unlinked bundles. 345 // Ensure unlinked bundles.
356 manager.getUnlinkedBundles(context); 346 manager.getUnlinkedBundles(context);
357 await manager.onUnlinkedComplete; 347 await manager.onUnlinkedComplete;
358 348
359 // Try to link. 349 // Try to link.
360 // Only 'bbb', because 'aaa' references 'package:bbb/b2.dart', which does 350 // Only 'bbb', because 'aaa' references 'package:bbb/b2.dart', which does
361 // not exist in the bundle 'bbb'. 351 // not exist in the bundle 'bbb'.
362 PackageBundle sdkBundle = getSdkBundle(sdk); 352 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
363 List<LinkedPubPackage> linkedPackages =
364 manager.getLinkedBundles(context, sdkBundle);
365 expect(linkedPackages, hasLength(1)); 353 expect(linkedPackages, hasLength(1));
366 354
367 // package:bbb 355 // package:bbb
368 { 356 {
369 LinkedPubPackage linkedPackage = linkedPackages 357 LinkedPubPackage linkedPackage = linkedPackages
370 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb'); 358 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb');
371 _assertHasLinkedVariable(linkedPackage, 'b', 'int', 'dart:core'); 359 _assertHasLinkedVariable(linkedPackage, 'b', 'int', 'dart:core');
372 } 360 }
373 } 361 }
374 362
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 ]); 397 ]);
410 398
411 // Ensure unlinked bundles. 399 // Ensure unlinked bundles.
412 manager.getUnlinkedBundles(context); 400 manager.getUnlinkedBundles(context);
413 await manager.onUnlinkedComplete; 401 await manager.onUnlinkedComplete;
414 402
415 // Try to link. 403 // Try to link.
416 // Only 'ccc' is linked. 404 // Only 'ccc' is linked.
417 // The 'aaa' + 'bbb' cycle cannot be linked because 'bbb' references 405 // The 'aaa' + 'bbb' cycle cannot be linked because 'bbb' references
418 // 'package:ccc/c2.dart', which does not exist in the bundle 'ccc'. 406 // 'package:ccc/c2.dart', which does not exist in the bundle 'ccc'.
419 PackageBundle sdkBundle = getSdkBundle(sdk); 407 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
420 List<LinkedPubPackage> linkedPackages =
421 manager.getLinkedBundles(context, sdkBundle);
422 expect(linkedPackages, hasLength(1)); 408 expect(linkedPackages, hasLength(1));
423 409
424 // package:ccc 410 // package:ccc
425 { 411 {
426 LinkedPubPackage linkedPackage = linkedPackages 412 LinkedPubPackage linkedPackage = linkedPackages
427 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc'); 413 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc');
428 _assertHasLinkedVariable(linkedPackage, 'c', 'int', 'dart:core'); 414 _assertHasLinkedVariable(linkedPackage, 'c', 'int', 'dart:core');
429 } 415 }
430 } 416 }
431 417
(...skipping 21 matching lines...) Expand all
453 'aaa': [libFolderA], 439 'aaa': [libFolderA],
454 'bbb': [libFolderB], 440 'bbb': [libFolderB],
455 }) 441 })
456 ]); 442 ]);
457 443
458 // Ensure unlinked bundles. 444 // Ensure unlinked bundles.
459 manager.getUnlinkedBundles(context); 445 manager.getUnlinkedBundles(context);
460 await manager.onUnlinkedComplete; 446 await manager.onUnlinkedComplete;
461 447
462 // Now we should be able to get linked bundles. 448 // Now we should be able to get linked bundles.
463 PackageBundle sdkBundle = getSdkBundle(sdk); 449 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
464 List<LinkedPubPackage> linkedPackages =
465 manager.getLinkedBundles(context, sdkBundle);
466 expect(linkedPackages, hasLength(2)); 450 expect(linkedPackages, hasLength(2));
467 451
468 // package:aaa 452 // package:aaa
469 { 453 {
470 LinkedPubPackage linkedPackage = linkedPackages 454 LinkedPubPackage linkedPackage = linkedPackages
471 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 455 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
472 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core'); 456 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core');
473 } 457 }
474 458
475 // package:bbb 459 // package:bbb
(...skipping 25 matching lines...) Expand all
501 new PackageMapUriResolver(resourceProvider, { 485 new PackageMapUriResolver(resourceProvider, {
502 'aaa': [libFolderA], 486 'aaa': [libFolderA],
503 }) 487 })
504 ]); 488 ]);
505 489
506 // Ensure unlinked bundles. 490 // Ensure unlinked bundles.
507 manager.getUnlinkedBundles(context); 491 manager.getUnlinkedBundles(context);
508 await manager.onUnlinkedComplete; 492 await manager.onUnlinkedComplete;
509 493
510 // Link. 494 // Link.
511 PackageBundle sdkBundle = getSdkBundle(sdk); 495 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
512 List<LinkedPubPackage> linkedPackages =
513 manager.getLinkedBundles(context, sdkBundle);
514 expect(linkedPackages, hasLength(1)); 496 expect(linkedPackages, hasLength(1));
515 497
516 // package:aaa 498 // package:aaa
517 { 499 {
518 LinkedPubPackage linkedPackage = linkedPackages 500 LinkedPubPackage linkedPackage = linkedPackages
519 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 501 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
520 _assertHasLinkedVariable(linkedPackage, 'a', 'A', 'src/a2.dart'); 502 _assertHasLinkedVariable(linkedPackage, 'a', 'A', 'src/a2.dart');
521 } 503 }
522 } 504 }
523 505
(...skipping 27 matching lines...) Expand all
551 'bbb': [libFolderB], 533 'bbb': [libFolderB],
552 'ccc': [libFolderC], 534 'ccc': [libFolderC],
553 }) 535 })
554 ]); 536 ]);
555 537
556 // Ensure unlinked bundles. 538 // Ensure unlinked bundles.
557 manager.getUnlinkedBundles(context); 539 manager.getUnlinkedBundles(context);
558 await manager.onUnlinkedComplete; 540 await manager.onUnlinkedComplete;
559 541
560 // Now we should be able to get linked bundles. 542 // Now we should be able to get linked bundles.
561 PackageBundle sdkBundle = getSdkBundle(sdk); 543 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
562 List<LinkedPubPackage> linkedPackages =
563 manager.getLinkedBundles(context, sdkBundle);
564 expect(linkedPackages, hasLength(3)); 544 expect(linkedPackages, hasLength(3));
565 545
566 // package:aaa 546 // package:aaa
567 { 547 {
568 LinkedPubPackage linkedPackage = linkedPackages 548 LinkedPubPackage linkedPackage = linkedPackages
569 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 549 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
570 _assertHasLinkedVariable(linkedPackage, 'a', 'C', 'package:ccc/c.dart'); 550 _assertHasLinkedVariable(linkedPackage, 'a', 'C', 'package:ccc/c.dart');
571 } 551 }
572 } 552 }
573 553
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 'aaa': [libFolderA], 587 'aaa': [libFolderA],
608 'bbb': [libFolderB], 588 'bbb': [libFolderB],
609 }) 589 })
610 ]); 590 ]);
611 591
612 // Ensure unlinked bundles. 592 // Ensure unlinked bundles.
613 manager.getUnlinkedBundles(context); 593 manager.getUnlinkedBundles(context);
614 await manager.onUnlinkedComplete; 594 await manager.onUnlinkedComplete;
615 595
616 // Now we should be able to get linked bundles. 596 // Now we should be able to get linked bundles.
617 PackageBundle sdkBundle = getSdkBundle(sdk); 597 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
618 List<LinkedPubPackage> linkedPackages =
619 manager.getLinkedBundles(context, sdkBundle);
620 expect(linkedPackages, hasLength(2)); 598 expect(linkedPackages, hasLength(2));
621 599
622 // package:aaa 600 // package:aaa
623 { 601 {
624 LinkedPubPackage linkedPackage = linkedPackages 602 LinkedPubPackage linkedPackage = linkedPackages
625 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 603 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
626 _assertHasLinkedVariable(linkedPackage, 'a', 'ExtB', 'dart:bbb'); 604 _assertHasLinkedVariable(linkedPackage, 'a', 'ExtB', 'dart:bbb');
627 } 605 }
628 606
629 // package:bbb 607 // package:bbb
(...skipping 22 matching lines...) Expand all
652 }) 630 })
653 ]); 631 ]);
654 632
655 // Ensure unlinked bundles. 633 // Ensure unlinked bundles.
656 manager.getUnlinkedBundles(context); 634 manager.getUnlinkedBundles(context);
657 await manager.onUnlinkedComplete; 635 await manager.onUnlinkedComplete;
658 636
659 // Try to link. 637 // Try to link.
660 // The package 'aaa' cannot be linked because it uses not 'dart' or 638 // The package 'aaa' cannot be linked because it uses not 'dart' or
661 // 'package' import URI scheme. 639 // 'package' import URI scheme.
662 PackageBundle sdkBundle = getSdkBundle(sdk); 640 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
663 List<LinkedPubPackage> linkedPackages =
664 manager.getLinkedBundles(context, sdkBundle);
665 expect(linkedPackages, hasLength(0)); 641 expect(linkedPackages, hasLength(0));
666 } 642 }
667 643
668 test_getPackageName() { 644 test_getPackageName() {
669 String getPackageName(String uriStr) { 645 String getPackageName(String uriStr) {
670 return PubSummaryManager.getPackageName(uriStr); 646 return PubSummaryManager.getPackageName(uriStr);
671 } 647 }
672 expect(getPackageName('package:foo/bar.dart'), 'foo'); 648 expect(getPackageName('package:foo/bar.dart'), 'foo');
673 expect(getPackageName('package:foo/bar/baz.dart'), 'foo'); 649 expect(getPackageName('package:foo/bar/baz.dart'), 'foo');
674 expect(getPackageName('wrong:foo/bar.dart'), isNull); 650 expect(getPackageName('wrong:foo/bar.dart'), isNull);
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 return; 910 return;
935 } 911 }
936 } 912 }
937 fail('Cannot find linked unit for $variableName in $linkedPackage'); 913 fail('Cannot find linked unit for $variableName in $linkedPackage');
938 } 914 }
939 } 915 }
940 } 916 }
941 fail('Cannot find variable $variableName in $linkedPackage'); 917 fail('Cannot find variable $variableName in $linkedPackage');
942 } 918 }
943 919
944 /**
945 * Compute element based summary bundle for the given [sdk].
946 */
947 static PackageBundle getSdkBundle(DartSdk sdk) {
948 return sdkBundleMap.putIfAbsent(sdk, () {
949 PackageBundleAssembler assembler = new PackageBundleAssembler();
950 for (SdkLibrary sdkLibrary in sdk.sdkLibraries) {
951 String uriStr = sdkLibrary.shortName;
952 Source source = sdk.mapDartUri(uriStr);
953 LibraryElement libraryElement =
954 sdk.context.computeLibraryElement(source);
955 assembler.serializeLibraryElement(libraryElement);
956 }
957 List<int> bytes = assembler.assemble().toBuffer();
958 return new PackageBundle.fromBuffer(bytes);
959 });
960 }
961
962 static PackageBundle _getBundleByPackageName( 920 static PackageBundle _getBundleByPackageName(
963 Map<PubPackage, PackageBundle> bundles, String name) { 921 Map<PubPackage, PackageBundle> bundles, String name) {
964 PubPackage package = 922 PubPackage package =
965 bundles.keys.singleWhere((package) => package.name == name); 923 bundles.keys.singleWhere((package) => package.name == name);
966 return bundles[package]; 924 return bundles[package];
967 } 925 }
968 } 926 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/context/mock_sdk.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698