| Index: pkg/front_end/lib/src/fasta/get_dependencies.dart | 
| diff --git a/pkg/front_end/lib/src/fasta/get_dependencies.dart b/pkg/front_end/lib/src/fasta/get_dependencies.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..59d328665fd02dd4a2052c2009aba7342c7a04c6 | 
| --- /dev/null | 
| +++ b/pkg/front_end/lib/src/fasta/get_dependencies.dart | 
| @@ -0,0 +1,62 @@ | 
| +// Copyright (c) 2017, 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.get_dependencies; | 
| + | 
| +import 'dart:async' show Future; | 
| + | 
| +import 'package:kernel/kernel.dart' show loadProgramFromBytes; | 
| + | 
| +import 'package:kernel/target/targets.dart' show Target; | 
| + | 
| +import '../../compiler_options.dart' show CompilerOptions; | 
| + | 
| +import '../../file_system.dart' show FileSystem; | 
| + | 
| +import '../base/processed_options.dart' show ProcessedOptions; | 
| + | 
| +import 'compiler_context.dart' show CompilerContext; | 
| + | 
| +import 'dill/dill_target.dart' show DillTarget; | 
| + | 
| +import 'kernel/kernel_target.dart' show KernelTarget; | 
| + | 
| +import 'uri_translator.dart' show UriTranslator; | 
| + | 
| +// TODO(sigmund): reimplement this API using the directive listener intead. | 
| +Future<List<Uri>> getDependencies(Uri script, | 
| +    {Uri sdk, | 
| +    Uri packages, | 
| +    Uri platform, | 
| +    bool verbose: false, | 
| +    Target target}) async { | 
| +  var options = new CompilerOptions() | 
| +    ..target = target | 
| +    ..verbose = verbose | 
| +    ..packagesFileUri = packages | 
| +    ..sdkSummary = platform | 
| +    ..sdkRoot = sdk; | 
| +  var pOptions = new ProcessedOptions(options); | 
| +  return await CompilerContext.runWithOptions(pOptions, | 
| +      (CompilerContext c) async { | 
| +    FileSystem fileSystem = c.options.fileSystem; | 
| +    UriTranslator uriTranslator = await c.options.getUriTranslator(); | 
| +    c.options.ticker.logMs("Read packages file"); | 
| +    DillTarget dillTarget = | 
| +        new DillTarget(c.options.ticker, uriTranslator, c.options.target); | 
| +    if (platform != null) { | 
| +      var bytes = await fileSystem.entityForUri(platform).readAsBytes(); | 
| +      var platformProgram = loadProgramFromBytes(bytes); | 
| +      platformProgram.unbindCanonicalNames(); | 
| +      dillTarget.loader.appendLibraries(platformProgram); | 
| +    } | 
| +    KernelTarget kernelTarget = new KernelTarget( | 
| +        fileSystem, false, dillTarget, uriTranslator, c.uriToSource); | 
| + | 
| +    kernelTarget.read(script); | 
| +    await dillTarget.buildOutlines(); | 
| +    await kernelTarget.loader.buildOutlines(); | 
| +    return await kernelTarget.loader.getDependencies(); | 
| +  }); | 
| +} | 
|  |