Index: pkg/front_end/lib/compiler_options.dart |
diff --git a/pkg/front_end/lib/compiler_options.dart b/pkg/front_end/lib/compiler_options.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1c496f10bc1cc88c86ba48bbe6b57a210a44f107 |
--- /dev/null |
+++ b/pkg/front_end/lib/compiler_options.dart |
@@ -0,0 +1,91 @@ |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library front_end.compiler_options; |
+ |
+import 'compilation_error.dart'; |
+ |
+/// Callback used to report errors encountered during compilation. |
+typedef void ErrorHandler(CompilationError error); |
+ |
+/// Front-end options relevant to compiler back ends. |
+/// |
+/// TODO(paulberry): add a mechanism to allow file system operations to be |
+/// stubbed out for testing. |
+class CompilerOptions { |
+ /// The path to the Dart SDK. |
+ /// |
+ /// If `null`, the SDK will be searched for using |
+ /// [Platform.resolvedExecutable] as a starting point. |
+ /// |
+ /// This option is mutually exclusive with [sdkSummary]. |
+ String sdkPath; |
+ |
+ /// Callback to which compilation errors should be delivered. |
+ /// |
+ /// If `null`, the first error will be reported by throwing an exception of |
+ /// type [CompilationError]. |
+ ErrorHandler onError; |
+ |
+ /// Path to the ".packages" file. |
+ /// |
+ /// If `null`, the ".packages" file will be found via the standard |
+ /// package_config search algorithm. |
+ String packagesFilePath; |
+ |
+ /// Paths to the input summary files (excluding the SDK summary). These files |
+ /// should all be linked summaries. They should also be closed, in the sense |
+ /// that any libraries they reference should also appear in [inputSummaries] |
+ /// or [sdkSummary]. |
+ List<String> inputSummaries = []; |
+ |
+ /// Path to the SDK summary file. |
+ /// |
+ /// This should be a linked summary. If `null`, the SDK summary will be |
+ /// searched for at a default location within [sdkPath]. |
+ /// |
+ /// This option is mutually exclusive with [sdkPath]. TODO(paulberry): if the |
+ /// VM does not contain a pickled copy of the SDK, we might need to change |
+ /// this. |
+ String sdkSummary; |
+ |
+ /// URI override map. |
+ /// |
+ /// This is a map from Uri to file path. Any URI override listed in this map |
+ /// takes precedence over the URI resolution that would be implied by the |
+ /// packages file (see [packagesFilePath]) and/or [bazelRoots]. |
+ /// |
+ /// If a URI is not listed in this map, then the normal URI resolution |
+ /// algorithm will be used. |
+ /// |
+ /// TODO(paulberry): transition analyzer and dev_compiler to use the |
+ /// "file:///bazel-root" mechanism, and then remove this. |
+ @deprecated |
+ Map<Uri, String> uriOverride = {}; |
+ |
+ /// Bazel roots. |
+ /// |
+ /// Any Uri that resolves to "file:///bazel-root/$rest" will be searched for |
+ /// at "$root/$rest" ("$root\\$rest" in Windows), where "$root" is drawn from |
+ /// this list. If the file is not found at any of those locations, the URI |
+ /// "file:///bazel-root/$rest" will be used directly. |
+ /// |
+ /// Intended use: if the Bazel workspace is located at path "$workspace", this |
+ /// could be set to `['$workspace', '$workspace/bazel-bin', |
+ /// '$workspace/bazel-genfiles']`, effectively overlaying source and generated |
+ /// files. |
+ List<String> bazelRoots = []; |
+ |
+ /// Sets the platform bit, which determines which patch files should be |
+ /// applied to the SDK. |
+ /// |
+ /// The value should be a power of two, and should match the `PLATFORM` bit |
+ /// flags in sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart. If |
+ /// zero, no patch files will be applied. |
+ int platformBit; |
+ |
+ /// The declared variables for use by configurable imports and constant |
+ /// evaluation. |
+ Map<String, String> declaredVariables; |
+} |