blob: 4b37d3888af61c2fd56a60c1d681e0440b8b0ce4 [file] [log] [blame]
// Copyright (c) 2016, 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.
/// Defines a front-end API for converting source code to resolved ASTs.
/// Note: this entire library is deprecated. It is provided as a migration path
/// until dev_compiler supports Dart Kernel. Once dev_compiler has been
/// converted to use Dart Kernel, this functionality will be removed.
library front_end.resolved_ast_generator;
import 'dart:async';
import 'compiler_options.dart';
import 'package:analyzer/dart/ast/ast.dart' show CompilationUnit;
import 'package:analyzer/dart/element/element.dart' show LibraryElement;
/// Processes the build unit whose source files are in [sources].
/// Intended for modular compilation.
/// [sources] should be the complete set of source files for a build unit
/// (including both library and part files). All of the library files are
/// compiled to resolved ASTs.
/// The compilation process is hermetic, meaning that the only files which will
/// be read are those listed in [sources], [CompilerOptions.inputSummaries], and
/// [CompilerOptions.sdkSummary]. If a source file attempts to refer to a file
/// which is not obtainable from these paths, that will result in an error, even
/// if the file exists on the filesystem.
/// Any `part` declarations found in [sources] must refer to part files which
/// are also listed in [sources], otherwise an error results. (It is not
/// permitted to refer to a part file declared in another build unit).
Future<ResolvedAsts> resolvedAstsFor(
List<Uri> sources, CompilerOptions options) =>
throw new UnimplementedError();
/// Representation of the resolved ASTs of a build unit.
/// Not intended to be implemented or extended by clients.
abstract class ResolvedAsts {
/// The resolved ASTs of the build unit's source libraries.
/// There is one sub-list per source library; each sub-list consists of the
/// resolved AST for the library's defining compilation unit, followed by the
/// resolved ASTs for any of the library's part files.
List<List<CompilationUnit>> get compilationUnits;
/// Given a [LibraryElement] referred to by [compilationUnits], determine the
/// path to the summary that the library originated from. If the
/// [LibraryElement] did not originate from a summary (i.e. because it
/// originated from one of the source files of *this* build unit), return
/// `null`.
/// This can be used by the client to determine which build unit any
/// referenced element originated from.
String getOriginatingSummary(LibraryElement element);