Chromium Code Reviews| Index: pkg/front_end/test/src/incremental/kernel_driver_test.dart |
| diff --git a/pkg/front_end/test/src/incremental/kernel_driver_test.dart b/pkg/front_end/test/src/incremental/kernel_driver_test.dart |
| index 193a84d95bcdb8f7fb827f2307456c4762eace9b..d802ce9d42f9a2d3abb3603a47ce3251314ba398 100644 |
| --- a/pkg/front_end/test/src/incremental/kernel_driver_test.dart |
| +++ b/pkg/front_end/test/src/incremental/kernel_driver_test.dart |
| @@ -12,6 +12,7 @@ import 'package:front_end/src/fasta/kernel/utils.dart'; |
| import 'package:front_end/src/fasta/uri_translator_impl.dart'; |
| import 'package:front_end/src/incremental/byte_store.dart'; |
| import 'package:front_end/src/incremental/kernel_driver.dart'; |
| +import 'package:front_end/src/kernel_generator_impl.dart'; |
| import 'package:kernel/ast.dart'; |
| import 'package:kernel/binary/ast_from_binary.dart'; |
| import 'package:kernel/target/targets.dart'; |
| @@ -286,6 +287,34 @@ static field (core::String) → core::int f; |
| expect(result.types.hierarchy, isNotNull); |
| } |
| + test_compile_useSdkOutline() async { |
| + List<int> sdkOutlineBytes = await _computeSdkOutlineBytes(); |
| + |
| + // Configure the driver to use the SDK outline. |
| + _createDriver(sdkOutlineBytes: sdkOutlineBytes); |
| + |
| + writeFile('/test/.packages', 'test:lib/'); |
| + String aPath = '/test/lib/a.dart'; |
| + Uri aUri = writeFile(aPath, r''' |
| +import 'dart:async'; |
| +var a = 1; |
| +Future<String> b; |
| +'''); |
| + |
| + KernelResult result = await driver.getKernel(aUri); |
| + |
| + // The result does not include SDK libraries. |
| + _assertLibraryUris(result, |
| + includes: [aUri], |
| + excludes: [Uri.parse('dart:core'), Uri.parse('dart:core')]); |
| + |
| + // The types of top-level variables are resolved. |
| + var library = _getLibrary(result, aUri); |
| + expect(library.fields[0].type.toString(), 'dart.core::int'); |
| + expect(library.fields[1].type.toString(), |
| + 'dart.async::Future<dart.core::String>'); |
| + } |
| + |
| test_limitedStore_exportDependencies() async { |
| writeFile('/test/.packages', 'test:lib/'); |
| String aPath = '/test/lib/a.dart'; |
| @@ -647,21 +676,38 @@ import 'b.dart'; |
| } |
| } |
| + Future<List<int>> _computeSdkOutlineBytes() async { |
| + var options = new CompilerOptions() |
| + ..fileSystem = fileSystem |
| + ..compileSdk = true |
| + ..strongMode = true |
| + ..sdkRoot = Uri.parse('file:///sdk/') |
| + ..target = new NoneTarget(new TargetFlags(strongMode: true)); |
| + var inputs = [Uri.parse('dart:core')]; |
| + var result = await generateKernel( |
|
Siggi Cherem (dart-lang)
2017/08/05 03:22:47
any reason why not use the public API instead? (`s
scheglov
2017/08/06 21:04:06
Well, this is what build uses.
And an attempt to u
Siggi Cherem (dart-lang)
2017/08/07 15:29:52
Hopefully just setting `options.chaseDependencies
scheglov
2017/08/07 15:51:26
Yes, this fixed the problem.
|
| + new ProcessedOptions(options, false, inputs), |
| + buildSummary: true); |
| + return result.summary; |
| + } |
| + |
| /// Create new [KernelDriver] instance and put it into the [driver] field. |
| void _createDriver( |
| - {Map<String, Uri> packages, KernelDriverFileAddedFn fileAddedFn}) { |
| + {List<int> sdkOutlineBytes, |
| + Map<String, Uri> packages, |
| + KernelDriverFileAddedFn fileAddedFn}) { |
| Map<String, Uri> dartLibraries = createSdkFiles(fileSystem); |
| var uriTranslator = |
| new UriTranslatorImpl(dartLibraries, {}, new MapPackages(packages)); |
| - driver = new KernelDriver( |
| - new ProcessedOptions(new CompilerOptions() |
| - ..logger = new PerformanceLog(null) |
| - ..fileSystem = fileSystem |
| - ..byteStore = new MemoryByteStore() |
| - ..strongMode = true |
| - ..target = new NoneTarget(new TargetFlags(strongMode: true))), |
| - uriTranslator, |
| - fileAddedFn: fileAddedFn); |
| + |
| + var options = new CompilerOptions() |
| + ..logger = new PerformanceLog(null) |
| + ..fileSystem = fileSystem |
| + ..byteStore = new MemoryByteStore() |
| + ..strongMode = true |
| + ..target = new NoneTarget(new TargetFlags(strongMode: true)); |
| + |
| + driver = new KernelDriver(new ProcessedOptions(options), uriTranslator, |
| + sdkOutlineBytes: sdkOutlineBytes, fileAddedFn: fileAddedFn); |
| } |
| Library _getLibrary(KernelResult result, Uri uri) { |