Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Unified Diff: pkg/compiler/lib/src/dart2js.dart

Issue 1975153002: Support (de)serialization from command-line (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/options.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/dart2js.dart
diff --git a/pkg/compiler/lib/src/dart2js.dart b/pkg/compiler/lib/src/dart2js.dart
index ee9e612ee969aaaed603ec86f5b9edda50248552..9b2c0bef03855cc08973424a83a54596587173ec 100644
--- a/pkg/compiler/lib/src/dart2js.dart
+++ b/pkg/compiler/lib/src/dart2js.dart
@@ -105,16 +105,19 @@ Future<api.CompilationResult> compile(List<String> argv) {
Uri libraryRoot = currentDirectory;
Uri out = currentDirectory.resolve('out.js');
Uri sourceMapOut = currentDirectory.resolve('out.js.map');
+ Uri resolutionInput;
Uri packageConfig = null;
Uri packageRoot = null;
List<String> options = new List<String>();
- bool explicitOut = false;
+ List<String> explicitOutputArguments = <String>[];
bool wantHelp = false;
bool wantVersion = false;
String outputLanguage = 'JavaScript';
bool stripArgumentSet = false;
bool analyzeOnly = false;
bool analyzeAll = false;
+ bool resolveOnly = false;
+ Uri resolutionOutput = currentDirectory.resolve('out.data');
bool dumpInfo = false;
bool allowNativeExtensions = false;
bool trustTypeAnnotations = false;
@@ -128,47 +131,47 @@ Future<api.CompilationResult> compile(List<String> argv) {
diagnosticHandler = new FormattingDiagnosticHandler(inputProvider);
Map<String, dynamic> environment = new Map<String, dynamic>();
- passThrough(String argument) => options.add(argument);
+ void passThrough(String argument) => options.add(argument);
if (BUILD_ID != null) {
passThrough("--build-id=$BUILD_ID");
}
- setLibraryRoot(String argument) {
+ void setLibraryRoot(String argument) {
libraryRoot = currentDirectory.resolve(extractPath(argument));
}
- setPackageRoot(String argument) {
+ void setPackageRoot(String argument) {
packageRoot = currentDirectory.resolve(extractPath(argument));
}
- setPackageConfig(String argument) {
+ void setPackageConfig(String argument) {
packageConfig =
currentDirectory.resolve(extractPath(argument, isDirectory: false));
}
- setOutput(Iterator<String> arguments) {
- optionsImplyCompilation.add(arguments.current);
+ void setOutput(Iterator<String> arguments) {
+ explicitOutputArguments.add(arguments.current);
String path;
if (arguments.current == '-o') {
if (!arguments.moveNext()) {
helpAndFail('Error: Missing file after -o option.');
}
+ explicitOutputArguments.add(arguments.current);
path = arguments.current;
} else {
path = extractParameter(arguments.current);
}
- explicitOut = true;
- out = currentDirectory.resolve(nativeToUriPath(path));
+ resolutionOutput = out = currentDirectory.resolve(nativeToUriPath(path));
sourceMapOut = Uri.parse('$out.map');
}
- setOutputType(String argument) {
+ void setOutputType(String argument) {
optionsImplyCompilation.add(argument);
if (argument == '--output-type=dart' ||
argument == '--output-type=dart-multi') {
outputLanguage = OUTPUT_LANGUAGE_DART;
- if (!explicitOut) {
+ if (explicitOutputArguments.isNotEmpty) {
out = currentDirectory.resolve('out.dart');
sourceMapOut = currentDirectory.resolve('out.dart.map');
}
@@ -183,75 +186,84 @@ Future<api.CompilationResult> compile(List<String> argv) {
passThrough(argument);
}
+ void setResolutionInput(String argument) {
+ resolutionInput =
+ currentDirectory.resolve(extractPath(argument, isDirectory: false));
+ }
+
+ void setResolveOnly(String argument) {
+ resolveOnly = true;
+ passThrough(argument);
+ }
+
String getDepsOutput(Map<Uri, SourceFile> sourceFiles) {
var filenames = sourceFiles.keys.map((uri) => '$uri').toList();
filenames.sort();
return filenames.join("\n");
}
- setStrip(String argument) {
+ void implyCompilation(String argument) {
optionsImplyCompilation.add(argument);
- stripArgumentSet = true;
passThrough(argument);
}
- setAnalyzeOnly(String argument) {
+ void setStrip(String argument) {
+ stripArgumentSet = true;
+ implyCompilation(argument);
+ }
+
+ void setAnalyzeOnly(String argument) {
analyzeOnly = true;
passThrough(argument);
}
- setAnalyzeAll(String argument) {
+ void setAnalyzeAll(String argument) {
analyzeAll = true;
passThrough(argument);
}
- setAllowNativeExtensions(String argument) {
+ void setAllowNativeExtensions(String argument) {
allowNativeExtensions = true;
passThrough(argument);
}
- setVerbose(_) {
+ void setVerbose(_) {
diagnosticHandler.verbose = true;
passThrough('--verbose');
}
- implyCompilation(String argument) {
- optionsImplyCompilation.add(argument);
- passThrough(argument);
- }
-
- setDumpInfo(String argument) {
+ void setDumpInfo(String argument) {
implyCompilation(argument);
dumpInfo = true;
}
- setTrustTypeAnnotations(String argument) {
+ void setTrustTypeAnnotations(String argument) {
trustTypeAnnotations = true;
implyCompilation(argument);
}
- setTrustJSInteropTypeAnnotations(String argument) {
+ void setTrustJSInteropTypeAnnotations(String argument) {
trustJSInteropTypeAnnotations = true;
implyCompilation(argument);
}
- setTrustPrimitives(String argument) {
+ void setTrustPrimitives(String argument) {
implyCompilation(argument);
}
- setCheckedMode(String argument) {
+ void setCheckedMode(String argument) {
checkedMode = true;
passThrough(argument);
}
- addInEnvironment(String argument) {
+ void addInEnvironment(String argument) {
int eqIndex = argument.indexOf('=');
String name = argument.substring(2, eqIndex);
String value = argument.substring(eqIndex + 1);
environment[name] = value;
}
- setCategories(String argument) {
+ void setCategories(String argument) {
List<String> categories = extractParameter(argument).split(',');
if (categories.contains('all')) {
categories = ["Client", "Server"];
@@ -274,7 +286,7 @@ Future<api.CompilationResult> compile(List<String> argv) {
}
}
- handleShortOptions(String argument) {
+ void handleShortOptions(String argument) {
var shortOptions = argument.substring(1).split("");
for (var shortOption in shortOptions) {
switch (shortOption) {
@@ -343,6 +355,8 @@ Future<api.CompilationResult> compile(List<String> argv) {
new OptionHandler(Flags.analyzeAll, setAnalyzeAll),
new OptionHandler(Flags.analyzeOnly, setAnalyzeOnly),
new OptionHandler(Flags.noSourceMaps, passThrough),
+ new OptionHandler(Option.resolutionInput, setResolutionInput),
+ new OptionHandler(Flags.resolveOnly, setResolveOnly),
new OptionHandler(Flags.analyzeSignaturesOnly, setAnalyzeOnly),
new OptionHandler(Flags.disableNativeLiveTypeAnalysis, passThrough),
new OptionHandler('--categories=.*', setCategories),
@@ -356,6 +370,7 @@ Future<api.CompilationResult> compile(List<String> argv) {
new OptionHandler(Flags.useContentSecurityPolicy, passThrough),
new OptionHandler(Flags.enableExperimentalMirrors, passThrough),
new OptionHandler(Flags.enableAssertMessage, passThrough),
+
// TODO(floitsch): remove conditional directives flag.
// We don't provide the info-message yet, since we haven't publicly
// launched the feature yet.
@@ -428,18 +443,31 @@ Future<api.CompilationResult> compile(List<String> argv) {
helpAndFail("Cannot specify both '--package-root' and '--packages.");
}
- if ((analyzeOnly || analyzeAll) && !optionsImplyCompilation.isEmpty) {
- if (!analyzeOnly) {
+ List<String> optionsImplyOutput = <String>[]
+ ..addAll(optionsImplyCompilation)
+ ..addAll(explicitOutputArguments);
+ if (resolveOnly && !optionsImplyCompilation.isEmpty) {
+ diagnosticHandler.info(
+ "Options $optionsImplyCompilation indicate that compilation is "
+ "expected, but compilation is turned off by the option "
+ "'${Flags.resolveOnly}'.",
+ api.Diagnostic.INFO);
+ } else if ((analyzeOnly || analyzeAll) && !optionsImplyOutput.isEmpty) {
+ if (analyzeAll && !analyzeOnly) {
diagnosticHandler.info(
"Option '${Flags.analyzeAll}' implies '${Flags.analyzeOnly}'.",
api.Diagnostic.INFO);
}
diagnosticHandler.info(
- "Options $optionsImplyCompilation indicate that output is expected, "
+ "Options $optionsImplyOutput indicate that output is expected, "
"but compilation is turned off by the option '${Flags.analyzeOnly}'.",
api.Diagnostic.INFO);
}
- if (analyzeAll) analyzeOnly = true;
+ if (resolveOnly) {
+ analyzeOnly = analyzeAll = true;
+ } else if (analyzeAll) {
+ analyzeOnly = true;
+ }
if (!analyzeOnly) {
if (allowNativeExtensions) {
helpAndFail("Option '${Flags.allowNativeExtensions}' is only supported "
@@ -456,7 +484,9 @@ Future<api.CompilationResult> compile(List<String> argv) {
RandomAccessFileOutputProvider outputProvider =
new RandomAccessFileOutputProvider(out, sourceMapOut,
- onInfo: diagnosticHandler.info, onFailure: fail);
+ onInfo: diagnosticHandler.info,
+ onFailure: fail,
+ resolutionOutput: resolveOnly ? resolutionOutput : null);
api.CompilationResult compilationDone(api.CompilationResult result) {
if (analyzeOnly) return result;
@@ -477,7 +507,7 @@ Future<api.CompilationResult> compile(List<String> argv) {
for (String filename in outputProvider.allOutputFiles) {
print(" $filename");
}
- } else if (!explicitOut) {
+ } else if (explicitOutputArguments.isNotEmpty) {
String input = uriPathToNative(arguments[0]);
String output = relativize(currentDirectory, out, Platform.isWindows);
print('Dart file ($input) compiled to $outputLanguage: $output');
@@ -492,10 +522,12 @@ Future<api.CompilationResult> compile(List<String> argv) {
packageRoot: packageRoot,
packageConfig: packageConfig,
packagesDiscoveryProvider: findPackages,
+ resolutionInput: resolutionInput,
+ resolutionOutput: resolutionOutput,
options: options,
environment: environment);
- return compileFunc(compilerOptions, inputProvider,
- diagnosticHandler, outputProvider)
+ return compileFunc(
+ compilerOptions, inputProvider, diagnosticHandler, outputProvider)
.then(compilationDone);
}
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698