| 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
 | 
| deleted file mode 100644
 | 
| index 2f83268174f3c5a4f3c23f670120865fd3a42783..0000000000000000000000000000000000000000
 | 
| --- a/sdk/lib/_internal/pub_generated/lib/src/dart.dart
 | 
| +++ /dev/null
 | 
| @@ -1,323 +0,0 @@
 | 
| -// Copyright (c) 2013, 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.
 | 
| -
 | 
| -/// A library for compiling Dart code and manipulating analyzer parse trees.
 | 
| -library pub.dart;
 | 
| -
 | 
| -import 'dart:async';
 | 
| -import 'dart:io';
 | 
| -import 'dart:isolate';
 | 
| -
 | 
| -import 'package:analyzer/analyzer.dart';
 | 
| -import 'package:path/path.dart' as path;
 | 
| -
 | 
| -import '../../../../../../pkg/compiler/lib/compiler.dart' as compiler;
 | 
| -import '../../../../../../pkg/compiler/lib/src/filenames.dart' show appendSlash;
 | 
| -
 | 
| -import '../../asset/dart/serialize.dart';
 | 
| -import 'io.dart';
 | 
| -import 'log.dart' as log;
 | 
| -
 | 
| -/// Interface to communicate with dart2js.
 | 
| -///
 | 
| -/// This is basically an amalgamation of dart2js's
 | 
| -/// [compiler.CompilerInputProvider], [compiler.CompilerOutputProvider], and
 | 
| -/// [compiler.DiagnosticHandler] function types so that we can provide them
 | 
| -/// as a single unit.
 | 
| -abstract class CompilerProvider {
 | 
| -  /// The URI to the root directory where "dart:" libraries can be found.
 | 
| -  ///
 | 
| -  /// This is used as the base URL to generate library URLs that are then sent
 | 
| -  /// back to [provideInput].
 | 
| -  Uri get libraryRoot;
 | 
| -
 | 
| -  /// Given [uri], responds with a future that completes to the contents of
 | 
| -  /// the input file at that URI.
 | 
| -  ///
 | 
| -  /// The future can complete to a string or a list of bytes.
 | 
| -  Future /*<String | List<int>>*/ provideInput(Uri uri);
 | 
| -
 | 
| -  /// Reports a diagnostic message from dart2js to the user.
 | 
| -  void handleDiagnostic(Uri uri, int begin, int end, String message,
 | 
| -      compiler.Diagnostic kind);
 | 
| -
 | 
| -  /// Given a [name] (which will be "" for the entrypoint) and a file extension,
 | 
| -  /// returns an [EventSink] that dart2js can write to to emit an output file.
 | 
| -  EventSink<String> provideOutput(String name, String extension);
 | 
| -}
 | 
| -
 | 
| -/// Compiles [entrypoint] to JavaScript (or to Dart if [toDart] is true) as
 | 
| -/// well as any ancillary outputs dart2js creates.
 | 
| -///
 | 
| -/// Uses [provider] to communcate between dart2js and the caller. Returns a
 | 
| -/// future that completes when compilation is done.
 | 
| -///
 | 
| -/// By default, the package root is assumed to be adjacent to [entrypoint], but
 | 
| -/// if [packageRoot] is passed that will be used instead.
 | 
| -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 preserveUris: false,
 | 
| -    bool suppressWarnings: false, bool suppressHints: false,
 | 
| -    bool suppressPackageWarnings: true, bool terse: false,
 | 
| -    bool includeSourceMapUrls: false, bool toDart: false}) {
 | 
| -  return new Future.sync(() {
 | 
| -    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 (preserveUris) options.add('--preserve-uris');
 | 
| -    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");
 | 
| -
 | 
| -    // Add the source map URLs.
 | 
| -    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 compiler.compile(
 | 
| -        path.toUri(entrypoint),
 | 
| -        provider.libraryRoot,
 | 
| -        path.toUri(appendSlash(packageRoot)),
 | 
| -        provider.provideInput,
 | 
| -        provider.handleDiagnostic,
 | 
| -        options,
 | 
| -        provider.provideOutput,
 | 
| -        environment);
 | 
| -  });
 | 
| -}
 | 
| -
 | 
| -/// Returns whether [dart] looks like an entrypoint file.
 | 
| -bool isEntrypoint(CompilationUnit dart) {
 | 
| -  // Allow two or fewer arguments so that entrypoints intended for use with
 | 
| -  // [spawnUri] get counted.
 | 
| -  //
 | 
| -  // TODO(nweiz): this misses the case where a Dart file doesn't contain main(),
 | 
| -  // but it parts in another file that does.
 | 
| -  return dart.declarations.any((node) {
 | 
| -    return node is FunctionDeclaration &&
 | 
| -        node.name.name == "main" &&
 | 
| -        node.functionExpression.parameters.parameters.length <= 2;
 | 
| -  });
 | 
| -}
 | 
| -
 | 
| -/// Efficiently parses the import and export directives in [contents].
 | 
| -///
 | 
| -/// If [name] is passed, it's used as the filename for error reporting.
 | 
| -List<UriBasedDirective> parseImportsAndExports(String contents, {String name}) {
 | 
| -  var collector = new _DirectiveCollector();
 | 
| -  parseDirectives(contents, name: name).accept(collector);
 | 
| -  return collector.directives;
 | 
| -}
 | 
| -
 | 
| -/// A simple visitor that collects import and export nodes.
 | 
| -class _DirectiveCollector extends GeneralizingAstVisitor {
 | 
| -  final directives = <UriBasedDirective>[];
 | 
| -
 | 
| -  visitUriBasedDirective(UriBasedDirective node) => directives.add(node);
 | 
| -}
 | 
| -
 | 
| -/// Runs [code] in an isolate.
 | 
| -///
 | 
| -/// [code] should be the contents of a Dart entrypoint. It may contain imports;
 | 
| -/// they will be resolved in the same context as the host isolate. [message] is
 | 
| -/// passed to the [main] method of the code being run; the caller is responsible
 | 
| -/// for using this to establish communication with the isolate.
 | 
| -///
 | 
| -/// [packageRoot] controls the package root of the isolate. It may be either a
 | 
| -/// [String] or a [Uri].
 | 
| -///
 | 
| -/// If [snapshot] is passed, the isolate will be loaded from that path if it
 | 
| -/// exists. Otherwise, a snapshot of the isolate's code will be saved to that
 | 
| -/// path once the isolate is loaded.
 | 
| -Future runInIsolate(String code, message, {packageRoot, String snapshot}) {
 | 
| -  final completer0 = new Completer();
 | 
| -  scheduleMicrotask(() {
 | 
| -    try {
 | 
| -      join0() {
 | 
| -        new Future.value(withTempDir(((dir) {
 | 
| -          final completer0 = new Completer();
 | 
| -          scheduleMicrotask(() {
 | 
| -            try {
 | 
| -              var dartPath = path.join(dir, 'runInIsolate.dart');
 | 
| -              writeTextFile(dartPath, code, dontLogContents: true);
 | 
| -              var port = new ReceivePort();
 | 
| -              join0(x0) {
 | 
| -                new Future.value(Isolate.spawn(_isolateBuffer, {
 | 
| -                  'replyTo': port.sendPort,
 | 
| -                  'uri': path.toUri(dartPath).toString(),
 | 
| -                  'packageRoot': x0,
 | 
| -                  'message': message
 | 
| -                })).then((x1) {
 | 
| -                  try {
 | 
| -                    x1;
 | 
| -                    new Future.value(port.first).then((x2) {
 | 
| -                      try {
 | 
| -                        var response = x2;
 | 
| -                        join1() {
 | 
| -                          join2() {
 | 
| -                            ensureDir(path.dirname(snapshot));
 | 
| -                            var snapshotArgs = [];
 | 
| -                            join3() {
 | 
| -                              snapshotArgs.addAll(
 | 
| -                                  ['--snapshot=${snapshot}', dartPath]);
 | 
| -                              new Future.value(
 | 
| -                                  runProcess(Platform.executable, snapshotArgs)).then((x3) {
 | 
| -                                try {
 | 
| -                                  var result = x3;
 | 
| -                                  join4() {
 | 
| -                                    log.warning(
 | 
| -                                        "Failed to compile a snapshot to " "${path.relative(snapshot)}:\n" +
 | 
| -                                            result.stderr.join("\n"));
 | 
| -                                    completer0.complete();
 | 
| -                                  }
 | 
| -                                  if (result.success) {
 | 
| -                                    completer0.complete(null);
 | 
| -                                  } else {
 | 
| -                                    join4();
 | 
| -                                  }
 | 
| -                                } catch (e0, s0) {
 | 
| -                                  completer0.completeError(e0, s0);
 | 
| -                                }
 | 
| -                              }, onError: completer0.completeError);
 | 
| -                            }
 | 
| -                            if (packageRoot != null) {
 | 
| -                              snapshotArgs.add('--package-root=${packageRoot}');
 | 
| -                              join3();
 | 
| -                            } else {
 | 
| -                              join3();
 | 
| -                            }
 | 
| -                          }
 | 
| -                          if (snapshot == null) {
 | 
| -                            completer0.complete(null);
 | 
| -                          } else {
 | 
| -                            join2();
 | 
| -                          }
 | 
| -                        }
 | 
| -                        if (response['type'] == 'error') {
 | 
| -                          throw new CrossIsolateException.deserialize(
 | 
| -                              response['error']);
 | 
| -                          join1();
 | 
| -                        } else {
 | 
| -                          join1();
 | 
| -                        }
 | 
| -                      } catch (e1, s1) {
 | 
| -                        completer0.completeError(e1, s1);
 | 
| -                      }
 | 
| -                    }, onError: completer0.completeError);
 | 
| -                  } catch (e2, s2) {
 | 
| -                    completer0.completeError(e2, s2);
 | 
| -                  }
 | 
| -                }, onError: completer0.completeError);
 | 
| -              }
 | 
| -              if (packageRoot == null) {
 | 
| -                join0(null);
 | 
| -              } else {
 | 
| -                join0(packageRoot.toString());
 | 
| -              }
 | 
| -            } catch (e, s) {
 | 
| -              completer0.completeError(e, s);
 | 
| -            }
 | 
| -          });
 | 
| -          return completer0.future;
 | 
| -        }))).then((x0) {
 | 
| -          try {
 | 
| -            x0;
 | 
| -            completer0.complete();
 | 
| -          } catch (e0, s0) {
 | 
| -            completer0.completeError(e0, s0);
 | 
| -          }
 | 
| -        }, onError: completer0.completeError);
 | 
| -      }
 | 
| -      if (snapshot != null && fileExists(snapshot)) {
 | 
| -        log.fine("Spawning isolate from ${snapshot}.");
 | 
| -        join1() {
 | 
| -          join2() {
 | 
| -            join0();
 | 
| -          }
 | 
| -          catch0(error, s1) {
 | 
| -            try {
 | 
| -              if (error is IsolateSpawnException) {
 | 
| -                log.fine(
 | 
| -                    "Couldn't load existing snapshot ${snapshot}:\n${error}");
 | 
| -                join2();
 | 
| -              } else {
 | 
| -                throw error;
 | 
| -              }
 | 
| -            } catch (error, s1) {
 | 
| -              completer0.completeError(error, s1);
 | 
| -            }
 | 
| -          }
 | 
| -          try {
 | 
| -            new Future.value(
 | 
| -                Isolate.spawnUri(
 | 
| -                    path.toUri(snapshot),
 | 
| -                    [],
 | 
| -                    message,
 | 
| -                    packageRoot: packageRoot)).then((x1) {
 | 
| -              try {
 | 
| -                x1;
 | 
| -                completer0.complete(null);
 | 
| -              } catch (e1, s2) {
 | 
| -                catch0(e1, s2);
 | 
| -              }
 | 
| -            }, onError: catch0);
 | 
| -          } catch (e2, s3) {
 | 
| -            catch0(e2, s3);
 | 
| -          }
 | 
| -        }
 | 
| -        if (packageRoot != null) {
 | 
| -          packageRoot = packageRoot.toString();
 | 
| -          join1();
 | 
| -        } else {
 | 
| -          join1();
 | 
| -        }
 | 
| -      } else {
 | 
| -        join0();
 | 
| -      }
 | 
| -    } catch (e, s) {
 | 
| -      completer0.completeError(e, s);
 | 
| -    }
 | 
| -  });
 | 
| -  return completer0.future;
 | 
| -}
 | 
| -
 | 
| -// TODO(nweiz): remove this when issue 12617 is fixed.
 | 
| -/// A function used as a buffer between the host isolate and [spawnUri].
 | 
| -///
 | 
| -/// [spawnUri] synchronously loads the file and its imports, which can deadlock
 | 
| -/// the host isolate if there's an HTTP import pointing at a server in the host.
 | 
| -/// Adding an additional isolate in the middle works around this.
 | 
| -void _isolateBuffer(message) {
 | 
| -  var replyTo = message['replyTo'];
 | 
| -  var packageRoot = message['packageRoot'];
 | 
| -  if (packageRoot != null) packageRoot = Uri.parse(packageRoot);
 | 
| -  Isolate.spawnUri(
 | 
| -      Uri.parse(message['uri']),
 | 
| -      [],
 | 
| -      message['message'],
 | 
| -      packageRoot: packageRoot).then((_) => replyTo.send({
 | 
| -    'type': 'success'
 | 
| -  })).catchError((e, stack) {
 | 
| -    replyTo.send({
 | 
| -      'type': 'error',
 | 
| -      'error': CrossIsolateException.serialize(e, stack)
 | 
| -    });
 | 
| -  });
 | 
| -}
 | 
| 
 |