| Index: pkg/analyzer/example/resolver_driver.dart
|
| diff --git a/pkg/analyzer/example/resolver_driver.dart b/pkg/analyzer/example/resolver_driver.dart
|
| old mode 100644
|
| new mode 100755
|
| index 0992b76644affa99530ffd52df4846b6b91fafbe..44d963511f373daf98beecf2b93125eb7b6e6d11
|
| --- a/pkg/analyzer/example/resolver_driver.dart
|
| +++ b/pkg/analyzer/example/resolver_driver.dart
|
| @@ -11,26 +11,40 @@ import 'package:analyzer/src/generated/engine.dart';
|
| import 'package:analyzer/src/generated/java_io.dart';
|
| import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
|
| import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk;
|
| +import 'package:analyzer/src/generated/source.dart';
|
| import 'package:analyzer/src/generated/source_io.dart';
|
|
|
| -main(List<String> args) {
|
| +const _usage =
|
| + 'Usage: resolve_driver <path_to_sdk> <file_to_resolve> [<packages_root>]';
|
| +
|
| +void main(List<String> args) {
|
| print('working dir ${new File('.').resolveSymbolicLinksSync()}');
|
|
|
| - if (args.length != 2) {
|
| - print('Usage: resolve_driver [path_to_sdk] [file_to_resolve]');
|
| + if (args.length < 2 || args.length > 3) {
|
| + print(_usage);
|
| exit(0);
|
| }
|
|
|
| + String packageRoot;
|
| + if (args.length == 3) {
|
| + packageRoot = args[2];
|
| + }
|
| +
|
| JavaSystemIO.setProperty("com.google.dart.sdk", args[0]);
|
| DartSdk sdk = DirectoryBasedDartSdk.defaultSdk;
|
|
|
| - AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
|
| - context.sourceFactory =
|
| - new SourceFactory([new DartUriResolver(sdk), new FileUriResolver()]);
|
| + var resolvers = [new DartUriResolver(sdk), new FileUriResolver()];
|
| +
|
| + if (packageRoot != null) {
|
| + var packageDirectory = new JavaFile(packageRoot);
|
| + resolvers.add(new PackageUriResolver([packageDirectory]));
|
| + }
|
| +
|
| + AnalysisContext context = AnalysisEngine.instance.createAnalysisContext()
|
| + ..sourceFactory = new SourceFactory(resolvers);
|
| +
|
| Source source = new FileBasedSource.con1(new JavaFile(args[1]));
|
| - //
|
| - ChangeSet changeSet = new ChangeSet();
|
| - changeSet.addedSource(source);
|
| + ChangeSet changeSet = new ChangeSet()..addedSource(source);
|
| context.applyChanges(changeSet);
|
| LibraryElement libElement = context.computeLibraryElement(source);
|
| print("libElement: $libElement");
|
| @@ -43,19 +57,20 @@ main(List<String> args) {
|
|
|
| class _ASTVisitor extends GeneralizingAstVisitor {
|
| visitNode(AstNode node) {
|
| - String text = '${node.runtimeType} : <"$node">';
|
| + var lines = <String>['${node.runtimeType} : <"$node">'];
|
| if (node is SimpleIdentifier) {
|
| Element element = node.staticElement;
|
| if (element != null) {
|
| - text += " element: ${element.runtimeType}";
|
| + lines.add(' element: ${element.runtimeType}');
|
| LibraryElement library = element.library;
|
| if (library != null) {
|
| - text +=
|
| - " from ${element.library.definingCompilationUnit.source.fullName}";
|
| + var fullName =
|
| + element.library.definingCompilationUnit.source.fullName;
|
| + lines.add(" from $fullName");
|
| }
|
| }
|
| }
|
| - print(text);
|
| + print(lines.join('\n'));
|
| return super.visitNode(node);
|
| }
|
| }
|
|
|