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 67f3e088c9970a056c3b2aae7ee501fd66266f0e..6dccd9e8192a6358eda14cd55c5a5ec28e244969 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/summary_generator.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,20 +676,35 @@ import 'b.dart'; |
} |
} |
+ Future<List<int>> _computeSdkOutlineBytes() async { |
+ var options = new CompilerOptions() |
+ ..fileSystem = fileSystem |
+ ..sdkRoot = Uri.parse('file:///sdk/') |
+ ..compileSdk = true |
+ ..chaseDependencies = true |
+ ..strongMode = true |
+ ..target = new NoneTarget(new TargetFlags(strongMode: true)); |
+ var inputs = [Uri.parse('dart:core')]; |
+ return summaryFor(inputs, options); |
+ } |
+ |
/// 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}) { |
var uriTranslator = new UriTranslatorImpl( |
createSdkFiles(fileSystem), 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) { |