Index: pkg/front_end/lib/src/fasta/compiler_command_line.dart |
diff --git a/pkg/front_end/lib/src/fasta/compiler_command_line.dart b/pkg/front_end/lib/src/fasta/compiler_command_line.dart |
deleted file mode 100644 |
index 0a682cdca6bcbb83cb66c767a28661438fc5fdde..0000000000000000000000000000000000000000 |
--- a/pkg/front_end/lib/src/fasta/compiler_command_line.dart |
+++ /dev/null |
@@ -1,211 +0,0 @@ |
-// 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 fasta.compiler_command_line; |
- |
-import 'dart:io' show exit; |
- |
-import 'package:kernel/target/targets.dart' |
- show Target, getTarget, TargetFlags, targets; |
- |
-import '../../compiler_options.dart'; |
-import '../base/processed_options.dart'; |
-import 'command_line.dart' show CommandLine, deprecated_argumentError; |
- |
-import 'compiler_context.dart' show CompilerContext; |
- |
-import 'fasta_codes.dart' |
- show |
- Message, |
- messageFastaUsageLong, |
- messageFastaUsageShort, |
- templateUnspecified; |
- |
-const Map<String, dynamic> optionSpecification = const <String, dynamic>{ |
- "--compile-sdk": Uri, |
- "--fatal": ",", |
- "--output": Uri, |
- "-o": Uri, |
- "--packages": Uri, |
- "--platform": Uri, |
- "--sdk": Uri, |
- "--target": String, |
- "-t": String, |
-}; |
- |
-/// Parser for options accepted by the `fasta` command-line tools. |
-// TODO(ahe,sigmund): move this and other tools under pkg/front_end/tool/ |
-class CompilerCommandLine extends CommandLine { |
- final String programName; |
- |
- CompilerCommandLine(String programName, List<String> arguments) |
- : programName = programName, |
- super(arguments, |
- specification: optionSpecification, |
- usage: computeUsage(programName, false)); |
- |
- bool get verify => options.containsKey("--verify"); |
- |
- bool get dumpIr => options.containsKey("--dump-ir"); |
- |
- bool get excludeSource => options.containsKey("--exclude-source"); |
- |
- bool get help { |
- return options.containsKey("--help") || |
- options.containsKey("-h") || |
- options.containsKey("/h") || |
- options.containsKey("/?"); |
- } |
- |
- void validate() { |
- if (help) { |
- print(computeUsage(programName, verbose).message); |
- exit(0); |
- } |
- |
- if (options.containsKey("-o") && options.containsKey("--output")) { |
- return deprecated_argumentError( |
- usage, "Can't specify both '-o' and '--output'."); |
- } |
- if (options.containsKey("-t") && options.containsKey("--target")) { |
- return deprecated_argumentError( |
- usage, "Can't specify both '-t' and '--target'."); |
- } |
- if (options.containsKey("--compile-sdk") && |
- options.containsKey("--platform")) { |
- return deprecated_argumentError( |
- usage, "Can't specify both '--compile-sdk' and '--platform'."); |
- } |
- if (programName == "compile_platform") { |
- if (arguments.length != 3) { |
- return deprecated_argumentError(usage, "Expected three arguments."); |
- } |
- if (options.containsKey("--compile-sdk")) { |
- return deprecated_argumentError(usage, |
- "Cannot specify '--compile-sdk' option to compile_platform."); |
- } |
- options['--compile-sdk'] = |
- Uri.base.resolveUri(new Uri.file(arguments[0])); |
- } else if (arguments.isEmpty) { |
- return deprecated_argumentError(usage, "No Dart file specified."); |
- } |
- |
- Target target = |
- getTarget(targetName, new TargetFlags(strongMode: strongMode)); |
- if (target == null) { |
- return deprecated_argumentError( |
- usage, |
- "Target '${targetName}' not recognized. " |
- "Valid targets are:\n ${targets.keys.join("\n ")}"); |
- } |
- options["target"] = target; |
- } |
- |
- Uri get output { |
- return options["-o"] ?? options["--output"] ?? defaultOutput; |
- } |
- |
- Uri get defaultOutput => Uri.base.resolve("${arguments.first}.dill"); |
- |
- Uri get platform { |
- return options.containsKey("--compile-sdk") |
- ? null |
- : options["--platform"] ?? Uri.base.resolve("platform.dill"); |
- } |
- |
- Uri get packages => options["--packages"]; |
- |
- Uri get sdk => options["--sdk"] ?? options["--compile-sdk"]; |
- |
- Set<String> get fatal { |
- return new Set<String>.from(options["--fatal"] ?? <String>[]); |
- } |
- |
- bool get errorsAreFatal => fatal.contains("errors"); |
- |
- bool get warningsAreFatal => fatal.contains("warnings"); |
- |
- bool get nitsAreFatal => fatal.contains("nits"); |
- |
- bool get strongMode => options.containsKey("--strong-mode"); |
- |
- String get targetName { |
- return options["-t"] ?? options["--target"] ?? "vm_fasta"; |
- } |
- |
- Target get target => options["target"]; |
- |
- static dynamic withGlobalOptions( |
- String programName, |
- List<String> arguments, |
- bool areRestArgumentsInputs, |
- dynamic f(CompilerContext context, List<String> restArguments)) { |
- // TODO(sigmund,ahe): delete this wrapper by moving validation into the |
- // callback. Note that this requires some subtle changes because validate |
- // sets some implicit options (like --compile-sdk in compile_platform). |
- var cl = CompilerContext.runWithDefaultOptions( |
- (_) => new CompilerCommandLine(programName, arguments)); |
- var options = new CompilerOptions() |
- ..compileSdk = cl.options.containsKey("--compile-sdk") |
- ..sdkRoot = cl.sdk |
- ..sdkSummary = cl.platform |
- ..packagesFileUri = cl.packages |
- ..strongMode = cl.strongMode |
- ..target = cl.target |
- ..throwOnErrors = cl.errorsAreFatal |
- ..throwOnWarnings = cl.warningsAreFatal |
- ..throwOnNits = cl.nitsAreFatal |
- ..embedSourceText = !cl.excludeSource |
- // All command-line tools take only a single entry point and chase |
- // dependencies, and provide a non-zero exit code when errors are found. |
- ..chaseDependencies = true |
- ..setExitCodeOnProblem = true |
- ..debugDump = cl.dumpIr |
- ..verbose = cl.verbose |
- ..verify = cl.verify; |
- |
- var inputs = <Uri>[]; |
- if (areRestArgumentsInputs) { |
- inputs = cl.arguments.map(Uri.base.resolve).toList(); |
- } |
- var pOptions = new ProcessedOptions(options, false, inputs, cl.output); |
- return CompilerContext.runWithOptions(pOptions, (c) => f(c, cl.arguments)); |
- } |
-} |
- |
-Message computeUsage(String programName, bool verbose) { |
- String basicUsage = "Usage: $programName [options] dartfile\n"; |
- String summary; |
- String options = |
- (verbose ? messageFastaUsageLong.message : messageFastaUsageShort.message) |
- .trim(); |
- switch (programName) { |
- case "outline": |
- summary = |
- "Creates an outline of a Dart program in the Dill/Kernel IR format."; |
- break; |
- |
- case "compile": |
- summary = "Compiles a Dart program to the Dill/Kernel IR format."; |
- break; |
- |
- case "run": |
- summary = "Runs a Dart program."; |
- break; |
- |
- case "compile_platform": |
- summary = "Compiles Dart SDK platform to the Dill/Kernel IR format."; |
- basicUsage = "Usage: $programName [options] patched_sdk fullOutput " |
- "outlineOutput\n"; |
- } |
- StringBuffer sb = new StringBuffer(basicUsage); |
- if (summary != null) { |
- sb.writeln(); |
- sb.writeln(summary); |
- sb.writeln(); |
- } |
- sb.write(options); |
- // TODO(ahe): Don't use [templateUnspecified]. |
- return templateUnspecified.withArguments("$sb"); |
-} |