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

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

Issue 2690063002: Refactor CompilerOutput (Closed)
Patch Set: Cleanup. Created 3 years, 10 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
Index: pkg/compiler/lib/src/source_file_provider.dart
diff --git a/pkg/compiler/lib/src/source_file_provider.dart b/pkg/compiler/lib/src/source_file_provider.dart
index b0c71a4c626c1503a9a1fb294ef37ed6811fd332..14a5d0b0754ff0e2e491f5f4eaf62ea3936916d4 100644
--- a/pkg/compiler/lib/src/source_file_provider.dart
+++ b/pkg/compiler/lib/src/source_file_provider.dart
@@ -257,44 +257,55 @@ class RandomAccessFileOutputProvider implements CompilerOutput {
}
}
- EventSink<String> call(String name, String extension) {
- return createEventSink(name, extension);
- }
-
- Uri createUri(String name, String extension) {
+ Uri createUri(String name, String extension, OutputType type) {
Uri uri;
- if (extension == "deferred_map") {
- uri = out.resolve(name);
- } else if (name == '') {
- if (extension == 'js' || extension == 'dart') {
- uri = out;
- } else if (extension == 'precompiled.js') {
- uri = computePrecompiledUri(out);
- onInfo("File ($uri) is compatible with header"
- " \"Content-Security-Policy: script-src 'self'\"");
- } else if (extension == 'js.map' || extension == 'dart.map') {
- uri = sourceMapOut;
- } else if (extension == 'info.json') {
- String outName = out.path.substring(out.path.lastIndexOf('/') + 1);
- uri = out.resolve('$outName.$extension');
- } else if (extension == 'data') {
+ // TODO(johnniwinther): Unify handle of [name] and [extension] to prepare
+ // for using a single, possibly relative, [uri] as input.
+ switch (type) {
+ case OutputType.js:
+ if (name == '') {
Siggi Cherem (dart-lang) 2017/02/14 23:14:17 any reason not to handle the name != '' case separ
Johnni Winther 2017/02/20 09:18:11 Because we shouldn't really be putting semantics h
+ uri = out;
+ } else {
+ uri = out.resolve('$name.$extension');
+ }
+ break;
+ case OutputType.js_map:
+ if (name == '') {
+ uri = sourceMapOut;
+ } else {
+ uri = out.resolve('$name.$extension');
+ }
+ break;
+ case OutputType.part:
+ uri = out.resolve('$name.$extension');
+ break;
+ case OutputType.serialization_data:
if (resolutionOutput == null) {
onFailure('Serialization target unspecified.');
}
uri = resolutionOutput;
- } else {
- onFailure('Unknown extension: $extension');
- }
- } else {
- uri = out.resolve('$name.$extension');
+ break;
+ case OutputType.info:
+ if (name == '') {
+ name = out.pathSegments.last;
+ }
+ if (extension == '') {
+ uri = out.resolve(name);
+ } else {
+ uri = out.resolve('$name.$extension');
+ }
+ break;
+ case OutputType.debug:
+ uri = out.resolve('$name.$extension');
+ break;
+ default:
+ onFailure('Unknown output type: $type');
}
return uri;
}
- EventSink<String> createEventSink(String name, String extension) {
- // TODO (johnniwinther, sigurdm): Make a better interface for
- // output-providers.
- Uri uri = createUri(name, extension);
+ OutputSink createOutputSink(String name, String extension, OutputType type) {
+ Uri uri = createUri(name, extension, type);
bool isPrimaryOutput = uri == out;
if (uri.scheme != 'file') {
@@ -332,19 +343,17 @@ class RandomAccessFileOutputProvider implements CompilerOutput {
}
}
- return new _EventSinkWrapper(writeStringSync, onDone);
+ return new _OutputSinkWrapper(writeStringSync, onDone);
}
}
-class _EventSinkWrapper extends EventSink<String> {
+class _OutputSinkWrapper extends OutputSink {
var onAdd, onClose;
- _EventSinkWrapper(this.onAdd, this.onClose);
+ _OutputSinkWrapper(this.onAdd, this.onClose);
void add(String data) => onAdd(data);
- void addError(error, [StackTrace stackTrace]) => throw error;
-
void close() => onClose();
}

Powered by Google App Engine
This is Rietveld 408576698