Index: pkg/front_end/lib/summary_generator.dart |
diff --git a/pkg/front_end/lib/summary_generator.dart b/pkg/front_end/lib/summary_generator.dart |
index 0c494c42a7ad252f356b34dfee9589243990d877..539cc2b272221e8b2f816b49e04c32cdb856c79d 100644 |
--- a/pkg/front_end/lib/summary_generator.dart |
+++ b/pkg/front_end/lib/summary_generator.dart |
@@ -8,6 +8,9 @@ library front_end.summary_generator; |
import 'dart:async'; |
import 'compiler_options.dart'; |
+import 'src/base/processed_options.dart'; |
+import 'src/kernel_generator_impl.dart'; |
+ |
/// Creates a summary representation of the build unit whose source files are in |
/// [sources]. |
/// |
@@ -16,17 +19,25 @@ import 'compiler_options.dart'; |
/// [sources] should be the complete set of source files for a build unit |
/// (including both library and part files). |
/// |
-/// The summarization process is hermetic, meaning that the only files which |
-/// will be read are those listed in [sources], |
+/// By default, the compilation process is hermetic, meaning that the only files |
+/// which will be read are those listed in [sources], |
/// [CompilerOptions.inputSummaries], and [CompilerOptions.sdkSummary]. If a |
/// source file attempts to refer to a file which is not obtainable from these |
-/// paths, that will result in an error, even if the file exists on the |
+/// URIs, that will result in an error, even if the file exists on the |
/// filesystem. |
/// |
+/// When [CompilerOptions.chaseDependencies] is true, this default behavior |
+/// changes, and any dependency of [sources] that is not listed in |
+/// [CompilerOptions.inputSummaries] and [CompilerOptions.sdkSummary] is treated |
+/// as an additional source file for the build unit. |
+/// |
/// Any `part` declarations found in [sources] must refer to part files which |
-/// are also listed in [sources], otherwise an error results. (It is not |
-/// permitted to refer to a part file declared in another build unit). |
+/// are also listed in the build unit sources, otherwise an error results. (It |
+/// is not permitted to refer to a part file declared in another build unit). |
/// |
/// The return value is a list of bytes to write to the summary file. |
-Future<List<int>> summaryFor(List<Uri> sources, CompilerOptions options) => |
- throw new UnimplementedError(); |
+Future<List<int>> summaryFor(List<Uri> sources, CompilerOptions options) async { |
+ return (await generateKernel(new ProcessedOptions(options, true, sources), |
+ buildSummary: true, buildProgram: false)) |
+ ?.summary; |
+} |