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

Side by Side Diff: pkg/front_end/test/src/incremental/kernel_driver_test.dart

Issue 2993093003: Add support for SDK outline in KernelDriver. (Closed)
Patch Set: Merge and tweaks. Created 3 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
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:front_end/compiler_options.dart'; 7 import 'package:front_end/compiler_options.dart';
8 import 'package:front_end/memory_file_system.dart'; 8 import 'package:front_end/memory_file_system.dart';
9 import 'package:front_end/src/base/performace_logger.dart'; 9 import 'package:front_end/src/base/performace_logger.dart';
10 import 'package:front_end/src/base/processed_options.dart'; 10 import 'package:front_end/src/base/processed_options.dart';
11 import 'package:front_end/src/fasta/kernel/utils.dart'; 11 import 'package:front_end/src/fasta/kernel/utils.dart';
12 import 'package:front_end/src/fasta/uri_translator_impl.dart'; 12 import 'package:front_end/src/fasta/uri_translator_impl.dart';
13 import 'package:front_end/src/incremental/byte_store.dart'; 13 import 'package:front_end/src/incremental/byte_store.dart';
14 import 'package:front_end/src/incremental/kernel_driver.dart'; 14 import 'package:front_end/src/incremental/kernel_driver.dart';
15 import 'package:front_end/summary_generator.dart';
15 import 'package:kernel/ast.dart'; 16 import 'package:kernel/ast.dart';
16 import 'package:kernel/binary/ast_from_binary.dart'; 17 import 'package:kernel/binary/ast_from_binary.dart';
17 import 'package:kernel/target/targets.dart'; 18 import 'package:kernel/target/targets.dart';
18 import 'package:kernel/text/ast_to_text.dart'; 19 import 'package:kernel/text/ast_to_text.dart';
19 import 'package:kernel/verifier.dart'; 20 import 'package:kernel/verifier.dart';
20 import 'package:package_config/src/packages_impl.dart'; 21 import 'package:package_config/src/packages_impl.dart';
21 import 'package:test/test.dart'; 22 import 'package:test/test.dart';
22 import 'package:test_reflective_loader/test_reflective_loader.dart'; 23 import 'package:test_reflective_loader/test_reflective_loader.dart';
23 24
24 import 'mock_sdk.dart'; 25 import 'mock_sdk.dart';
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 test_compile_typeEnvironment() async { 280 test_compile_typeEnvironment() async {
280 writeFile('/test/.packages', 'test:lib/'); 281 writeFile('/test/.packages', 'test:lib/');
281 String aPath = '/test/lib/a.dart'; 282 String aPath = '/test/lib/a.dart';
282 Uri aUri = writeFile(aPath, 'class A {}'); 283 Uri aUri = writeFile(aPath, 'class A {}');
283 284
284 KernelResult result = await driver.getKernel(aUri); 285 KernelResult result = await driver.getKernel(aUri);
285 expect(result.types.coreTypes.intClass, isNotNull); 286 expect(result.types.coreTypes.intClass, isNotNull);
286 expect(result.types.hierarchy, isNotNull); 287 expect(result.types.hierarchy, isNotNull);
287 } 288 }
288 289
290 test_compile_useSdkOutline() async {
291 List<int> sdkOutlineBytes = await _computeSdkOutlineBytes();
292
293 // Configure the driver to use the SDK outline.
294 _createDriver(sdkOutlineBytes: sdkOutlineBytes);
295
296 writeFile('/test/.packages', 'test:lib/');
297 String aPath = '/test/lib/a.dart';
298 Uri aUri = writeFile(aPath, r'''
299 import 'dart:async';
300 var a = 1;
301 Future<String> b;
302 ''');
303
304 KernelResult result = await driver.getKernel(aUri);
305
306 // The result does not include SDK libraries.
307 _assertLibraryUris(result,
308 includes: [aUri],
309 excludes: [Uri.parse('dart:core'), Uri.parse('dart:core')]);
310
311 // The types of top-level variables are resolved.
312 var library = _getLibrary(result, aUri);
313 expect(library.fields[0].type.toString(), 'dart.core::int');
314 expect(library.fields[1].type.toString(),
315 'dart.async::Future<dart.core::String>');
316 }
317
289 test_limitedStore_exportDependencies() async { 318 test_limitedStore_exportDependencies() async {
290 writeFile('/test/.packages', 'test:lib/'); 319 writeFile('/test/.packages', 'test:lib/');
291 String aPath = '/test/lib/a.dart'; 320 String aPath = '/test/lib/a.dart';
292 String bPath = '/test/lib/b.dart'; 321 String bPath = '/test/lib/b.dart';
293 String cPath = '/test/lib/c.dart'; 322 String cPath = '/test/lib/c.dart';
294 Uri aUri = writeFile(aPath, 'class A {}'); 323 Uri aUri = writeFile(aPath, 'class A {}');
295 var bUri = writeFile(bPath, 'export "a.dart";'); 324 var bUri = writeFile(bPath, 'export "a.dart";');
296 Uri cUri = writeFile(cPath, r''' 325 Uri cUri = writeFile(cPath, r'''
297 import 'b.dart'; 326 import 'b.dart';
298 A a; 327 A a;
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 .expand((uris) => uris) 669 .expand((uris) => uris)
641 .toList(); 670 .toList();
642 for (var shouldInclude in includes) { 671 for (var shouldInclude in includes) {
643 expect(libraryUris, contains(shouldInclude)); 672 expect(libraryUris, contains(shouldInclude));
644 } 673 }
645 for (var shouldExclude in excludes) { 674 for (var shouldExclude in excludes) {
646 expect(libraryUris, isNot(contains(shouldExclude))); 675 expect(libraryUris, isNot(contains(shouldExclude)));
647 } 676 }
648 } 677 }
649 678
679 Future<List<int>> _computeSdkOutlineBytes() async {
680 var options = new CompilerOptions()
681 ..fileSystem = fileSystem
682 ..sdkRoot = Uri.parse('file:///sdk/')
683 ..compileSdk = true
684 ..chaseDependencies = true
685 ..strongMode = true
686 ..target = new NoneTarget(new TargetFlags(strongMode: true));
687 var inputs = [Uri.parse('dart:core')];
688 return summaryFor(inputs, options);
689 }
690
650 /// Create new [KernelDriver] instance and put it into the [driver] field. 691 /// Create new [KernelDriver] instance and put it into the [driver] field.
651 void _createDriver( 692 void _createDriver(
652 {Map<String, Uri> packages, KernelDriverFileAddedFn fileAddedFn}) { 693 {List<int> sdkOutlineBytes,
694 Map<String, Uri> packages,
695 KernelDriverFileAddedFn fileAddedFn}) {
653 var uriTranslator = new UriTranslatorImpl( 696 var uriTranslator = new UriTranslatorImpl(
654 createSdkFiles(fileSystem), new MapPackages(packages)); 697 createSdkFiles(fileSystem), new MapPackages(packages));
655 driver = new KernelDriver( 698
656 new ProcessedOptions(new CompilerOptions() 699 var options = new CompilerOptions()
657 ..logger = new PerformanceLog(null) 700 ..logger = new PerformanceLog(null)
658 ..fileSystem = fileSystem 701 ..fileSystem = fileSystem
659 ..byteStore = new MemoryByteStore() 702 ..byteStore = new MemoryByteStore()
660 ..strongMode = true 703 ..strongMode = true
661 ..target = new NoneTarget(new TargetFlags(strongMode: true))), 704 ..target = new NoneTarget(new TargetFlags(strongMode: true));
662 uriTranslator, 705
663 fileAddedFn: fileAddedFn); 706 driver = new KernelDriver(new ProcessedOptions(options), uriTranslator,
707 sdkOutlineBytes: sdkOutlineBytes, fileAddedFn: fileAddedFn);
664 } 708 }
665 709
666 Library _getLibrary(KernelResult result, Uri uri) { 710 Library _getLibrary(KernelResult result, Uri uri) {
667 for (var cycleResult in result.results) { 711 for (var cycleResult in result.results) {
668 for (var library in cycleResult.kernelLibraries) { 712 for (var library in cycleResult.kernelLibraries) {
669 if (library.importUri == uri) return library; 713 if (library.importUri == uri) return library;
670 } 714 }
671 } 715 }
672 throw fail('No library found with URI "$uri"'); 716 throw fail('No library found with URI "$uri"');
673 } 717 }
(...skipping 11 matching lines...) Expand all
685 .writeLibraryFile(library); 729 .writeLibraryFile(library);
686 return buffer.toString(); 730 return buffer.toString();
687 } 731 }
688 732
689 /// Return the [Uri] for the given Posix [path]. 733 /// Return the [Uri] for the given Posix [path].
690 static Uri _folderUri(String path) { 734 static Uri _folderUri(String path) {
691 if (!path.endsWith('/')) path += '/'; 735 if (!path.endsWith('/')) path += '/';
692 return Uri.parse('file://$path'); 736 return Uri.parse('file://$path');
693 } 737 }
694 } 738 }
OLDNEW
« no previous file with comments | « pkg/front_end/test/memory_file_system_test.dart ('k') | pkg/front_end/test/src/incremental/mock_sdk.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698