Index: observatory_pub_packages/code_transformers/src/resolver.dart |
=================================================================== |
--- observatory_pub_packages/code_transformers/src/resolver.dart (revision 0) |
+++ observatory_pub_packages/code_transformers/src/resolver.dart (working copy) |
@@ -0,0 +1,102 @@ |
+// Copyright (c) 2014, 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 code_transformer.src.resolver; |
+ |
+import 'dart:async'; |
+ |
+import 'package:analyzer/src/generated/ast.dart' show Expression; |
+import 'package:analyzer/src/generated/constant.dart' show EvaluationResult; |
+import 'package:analyzer/src/generated/element.dart'; |
+import 'package:barback/barback.dart'; |
+import 'package:source_maps/refactor.dart'; |
+import 'package:source_span/source_span.dart'; |
+ |
+ |
+/// Class for working with a barback based resolved AST. |
+abstract class Resolver { |
+ /// Update the status of all the sources referenced by the entry points and |
+ /// update the resolved library. If [entryPoints] is omitted, the primary |
+ /// asset of [transform] is used as the only entry point. |
+ /// |
+ /// [release] must be called when done handling this Resolver to allow it |
+ /// to be used by later phases. |
+ Future<Resolver> resolve(Transform transform, [List<AssetId> entryPoints]); |
+ |
+ /// Release this resolver so it can be updated by following transforms. |
+ void release(); |
+ |
+ /// Gets the resolved Dart library for an asset, or null if the AST has not |
+ /// been resolved. |
+ /// |
+ /// If the AST has not been resolved then this normally means that the |
+ /// transformer hosting this needs to be in an earlier phase. |
+ LibraryElement getLibrary(AssetId assetId); |
+ |
+ /// Gets all libraries accessible from the entry point, recursively. |
+ /// |
+ /// This includes all Dart SDK libraries as well. |
+ Iterable<LibraryElement> get libraries; |
+ |
+ /// Finds the first library identified by [libraryName], or null if no |
+ /// library can be found. |
+ LibraryElement getLibraryByName(String libraryName); |
+ |
+ /// Finds the first library identified by [libraryName], or null if no |
+ /// library can be found. |
+ /// |
+ /// [uri] must be an absolute URI of the form |
+ /// `[dart:|package:]path/file.dart`. |
+ LibraryElement getLibraryByUri(Uri uri); |
+ |
+ /// Resolves a fully-qualified type name (library_name.ClassName). |
+ /// |
+ /// This will resolve the first instance of [typeName], because of potential |
+ /// library name conflicts the name is not guaranteed to be unique. |
+ ClassElement getType(String typeName); |
+ |
+ /// Resolves a fully-qualified top-level library variable |
+ /// (library_name.variableName). |
+ /// |
+ /// This will resolve the first instance of [variableName], because of |
+ /// potential library name conflicts the name is not guaranteed to be unique. |
+ Element getLibraryVariable(String variableName); |
+ |
+ /// Resolves a fully-qualified top-level library function |
+ /// (library_name.functionName). |
+ /// |
+ /// This will resolve the first instance of [functionName], because of |
+ /// potential library name conflicts the name is not guaranteed to be unique. |
+ Element getLibraryFunction(String functionName); |
+ |
+ /// Gets the result of evaluating the constant [expression] in the context of |
+ /// a [library]. |
+ EvaluationResult evaluateConstant( |
+ LibraryElement library, Expression expression); |
+ |
+ /// Gets an URI appropriate for importing the specified library. |
+ /// |
+ /// Returns null if the library cannot be imported via an absolute URI or |
+ /// from [from] (if provided). |
+ Uri getImportUri(LibraryElement lib, {AssetId from}); |
+ |
+ /// Get the asset ID of the file containing the asset. |
+ AssetId getSourceAssetId(Element element); |
+ |
+ /// Get the source span where the specified element was defined or null if |
+ /// the element came from the Dart SDK. |
+ SourceSpan getSourceSpan(Element element); |
+ |
+ /// Get a [SourceFile] with the contents of the file that defines [element], |
+ /// or null if the element came from the Dart SDK. |
+ SourceFile getSourceFile(Element element); |
+ |
+ /// Creates a text edit transaction for the given element if it is able |
+ /// to be edited, returns null otherwise. |
+ /// |
+ /// The transaction contains the entire text of the source file where the |
+ /// element originated. If the element was from a library part then the |
+ /// source file is the part file rather than the library. |
+ TextEditTransaction createTextEditTransaction(Element element); |
+} |