Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: pkg/analyzer_experimental/example/resolve_driver.dart

Issue 12604020: analyzer_experimental checkpoint and AnalysisContext example. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env dart
2
3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
4 // for details. All rights reserved. Use of this source code is governed by a
5 // BSD-style license that can be found in the LICENSE file.
6
7 import 'package:analyzer_experimental/src/generated/java_io.dart';
8 import 'package:analyzer_experimental/src/generated/source_io.dart';
9 import 'package:analyzer_experimental/src/generated/ast.dart';
10 import 'package:analyzer_experimental/src/generated/sdk.dart';
11 import 'package:analyzer_experimental/src/generated/element.dart';
12 import 'package:analyzer_experimental/src/generated/engine.dart';
13
14 import 'dart:io';
15
16 main() {
17 print('working dir ${new File('.').fullPathSync()}');
18
19 var args = new Options().arguments;
20 if (args.length != 2) {
21 print('Usage: resolve_driver [path_to_sdk] [file_to_resolve]');
22 exit(0);
23 }
24
25 JavaSystemIO.setProperty("com.google.dart.sdk", args[0]);
26 DartSdk sdk = DartSdk.defaultSdk;
27
28 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
29 context.sourceFactory = new SourceFactory.con2([new DartUriResolver(sdk), new FileUriResolver()]);
30 Source source = new FileBasedSource.con1(context.sourceFactory, new JavaFile(a rgs[1]));
31 // Source source = new FileBasedSource.con1(context.sourceFactory, new JavaFile ("example/resolve_driver.dart"));
32 //
33 ChangeSet changeSet = new ChangeSet();
34 changeSet.added(source);
35 changeSet.changed(source);
Brian Wilkerson 2013/03/18 20:45:40 You shouldn't need to mark a source as changed if
scheglov 2013/03/18 20:50:49 Done.
36 context.applyChanges(changeSet);
37 LibraryElement libElement = context.getLibraryElement(source);
38 print("libElement: $libElement");
39
40 CompilationUnit resolvedUnit = context.resolve(source, libElement);
41 var visitor = new _ASTVisitor();
42 resolvedUnit.accept(visitor);
43 }
44
45 class _ASTVisitor extends GeneralizingASTVisitor {
46 visitNode(ASTNode node) {
47 String text = '${node.runtimeType} : <"${node.toString()}">';
48 if (node is SimpleIdentifier) {
49 Element element = node.element;
50 if (element != null) {
51 text += " element: ${element.runtimeType}";
52 LibraryElement library = element.library;
53 if (library != null) {
54 text += " from ${element.library.definingCompilationUnit.source.fullNa me}";
55 }
56 }
57 }
58 print(text);
59 return super.visitNode(node);
60 }
61 }
62
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698