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

Unified Diff: sdk/lib/_internal/pub_generated/lib/src/dart.dart

Issue 557563002: Store the async-await compiled pub code directly in the repo. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 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: sdk/lib/_internal/pub_generated/lib/src/dart.dart
diff --git a/sdk/lib/_internal/pub_generated/lib/src/dart.dart b/sdk/lib/_internal/pub_generated/lib/src/dart.dart
new file mode 100644
index 0000000000000000000000000000000000000000..41e12bfe246511ca0ace800c92e5d070ee46f41d
--- /dev/null
+++ b/sdk/lib/_internal/pub_generated/lib/src/dart.dart
@@ -0,0 +1,107 @@
+library pub.dart;
+import 'dart:async';
+import 'dart:isolate';
+import 'package:analyzer/analyzer.dart';
+import 'package:path/path.dart' as path;
+import 'package:stack_trace/stack_trace.dart';
+import 'file:///Users/rnystrom/dev/dart/dart/sdk/lib/_internal/compiler/compiler.dart' as compiler;
+import 'file:///Users/rnystrom/dev/dart/dart/sdk/lib/_internal/compiler/implementation/filenames.dart' show appendSlash;
+import '../../asset/dart/serialize.dart';
+import 'io.dart';
+import 'utils.dart';
+abstract class CompilerProvider {
+ Uri get libraryRoot;
+ Future provideInput(Uri uri);
+ void handleDiagnostic(Uri uri, int begin, int end, String message,
+ compiler.Diagnostic kind);
+ EventSink<String> provideOutput(String name, String extension);
+}
+Future compile(String entrypoint, CompilerProvider provider,
+ {Iterable<String> commandLineOptions, bool checked: false, bool csp: false,
+ bool minify: true, bool verbose: false, Map<String, String> environment,
+ String packageRoot, bool analyzeAll: false, bool suppressWarnings: false,
+ bool suppressHints: false, bool suppressPackageWarnings: true, bool terse:
+ false, bool includeSourceMapUrls: false, bool toDart: false}) {
+ return syncFuture(() {
+ var options = <String>['--categories=Client,Server'];
+ if (checked) options.add('--enable-checked-mode');
+ if (csp) options.add('--csp');
+ if (minify) options.add('--minify');
+ if (verbose) options.add('--verbose');
+ if (analyzeAll) options.add('--analyze-all');
+ if (suppressWarnings) options.add('--suppress-warnings');
+ if (suppressHints) options.add('--suppress-hints');
+ if (!suppressPackageWarnings) options.add('--show-package-warnings');
+ if (terse) options.add('--terse');
+ if (toDart) options.add('--output-type=dart');
+ var sourceUrl = path.toUri(entrypoint);
+ options.add("--out=$sourceUrl.js");
+ if (includeSourceMapUrls) {
+ options.add("--source-map=$sourceUrl.js.map");
+ }
+ if (environment == null) environment = {};
+ if (commandLineOptions != null) options.addAll(commandLineOptions);
+ if (packageRoot == null) {
+ packageRoot = path.join(path.dirname(entrypoint), 'packages');
+ }
+ return Chain.track(
+ compiler.compile(
+ path.toUri(entrypoint),
+ provider.libraryRoot,
+ path.toUri(appendSlash(packageRoot)),
+ provider.provideInput,
+ provider.handleDiagnostic,
+ options,
+ provider.provideOutput,
+ environment));
+ });
+}
+bool isEntrypoint(CompilationUnit dart) {
+ return dart.declarations.any((node) {
+ return node is FunctionDeclaration &&
+ node.name.name == "main" &&
+ node.functionExpression.parameters.parameters.length <= 2;
+ });
+}
+List<UriBasedDirective> parseImportsAndExports(String contents, {String name}) {
+ var collector = new _DirectiveCollector();
+ parseDirectives(contents, name: name).accept(collector);
+ return collector.directives;
+}
+class _DirectiveCollector extends GeneralizingAstVisitor {
+ final directives = <UriBasedDirective>[];
+ visitUriBasedDirective(UriBasedDirective node) => directives.add(node);
+}
+Future runInIsolate(String code, message) {
+ return withTempDir((dir) {
+ var dartPath = path.join(dir, 'runInIsolate.dart');
+ writeTextFile(dartPath, code, dontLogContents: true);
+ var port = new ReceivePort();
+ return Chain.track(Isolate.spawn(_isolateBuffer, {
+ 'replyTo': port.sendPort,
+ 'uri': path.toUri(dartPath).toString(),
+ 'message': message
+ })).then((_) => port.first).then((response) {
+ if (response['type'] == 'success') return null;
+ assert(response['type'] == 'error');
+ return new Future.error(
+ new CrossIsolateException.deserialize(response['error']),
+ new Chain.current());
+ });
+ });
+}
+void _isolateBuffer(message) {
+ var replyTo = message['replyTo'];
+ Chain.track(
+ Isolate.spawnUri(
+ Uri.parse(message['uri']),
+ [],
+ message['message'])).then((_) => replyTo.send({
+ 'type': 'success'
+ })).catchError((e, stack) {
+ replyTo.send({
+ 'type': 'error',
+ 'error': CrossIsolateException.serialize(e, stack)
+ });
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698