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

Side by Side Diff: pkg/code_transformers/lib/src/resolver_impl.dart

Issue 211393006: Enables codegen support in polymer (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 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
« no previous file with comments | « pkg/code_transformers/lib/src/resolver.dart ('k') | pkg/polymer/CHANGELOG.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library code_transformer.src.resolver_impl; 5 library code_transformer.src.resolver_impl;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'package:analyzer/analyzer.dart' show parseCompilationUnit; 8 import 'package:analyzer/analyzer.dart' show parseCompilationUnit;
9 import 'package:analyzer/src/generated/ast.dart'; 9 import 'package:analyzer/src/generated/ast.dart' hide ConstantEvaluator;
10 import 'package:analyzer/src/generated/constant.dart' show ConstantEvaluator,
11 EvaluationResult;
10 import 'package:analyzer/src/generated/element.dart'; 12 import 'package:analyzer/src/generated/element.dart';
11 import 'package:analyzer/src/generated/engine.dart'; 13 import 'package:analyzer/src/generated/engine.dart';
12 import 'package:analyzer/src/generated/java_io.dart'; 14 import 'package:analyzer/src/generated/java_io.dart';
13 import 'package:analyzer/src/generated/sdk.dart' show DartSdk; 15 import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
14 import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk; 16 import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk;
15 import 'package:analyzer/src/generated/source.dart'; 17 import 'package:analyzer/src/generated/source.dart';
16 import 'package:barback/barback.dart'; 18 import 'package:barback/barback.dart';
17 import 'package:code_transformers/assets.dart'; 19 import 'package:code_transformers/assets.dart';
18 import 'package:path/path.dart' as native_path; 20 import 'package:path/path.dart' as native_path;
19 import 'package:source_maps/refactor.dart'; 21 import 'package:source_maps/refactor.dart';
20 import 'package:source_maps/span.dart' show SourceFile, Span; 22 import 'package:source_maps/span.dart' show SourceFile, Span;
21 23
22 import 'resolver.dart'; 24 import 'resolver.dart';
23 25
24 // We should always be using url paths here since it's always Dart/pub code. 26 // We should always be using url paths here since it's always Dart/pub code.
25 final path = native_path.url; 27 final path = native_path.url;
26 28
27 /// Resolves and updates an AST based on Barback-based assets. 29 /// Resolves and updates an AST based on Barback-based assets.
28 /// 30 ///
29 /// This also provides a handful of useful APIs for traversing and working 31 /// This also provides a handful of useful APIs for traversing and working
30 /// with the resolved AST. 32 /// with the resolved AST.
31 class ResolverImpl implements Resolver { 33 class ResolverImpl implements Resolver {
32 /// Cache of all asset sources currently referenced. 34 /// Cache of all asset sources currently referenced.
33 final Map<AssetId, _AssetBasedSource> sources = 35 final Map<AssetId, _AssetBasedSource> sources =
34 <AssetId, _AssetBasedSource>{}; 36 <AssetId, _AssetBasedSource>{};
35 37
36 final AnalysisContext _context = 38 final InternalAnalysisContext _context =
37 AnalysisEngine.instance.createAnalysisContext(); 39 AnalysisEngine.instance.createAnalysisContext();
38 40
39 /// Transform for which this is currently updating, or null when not updating. 41 /// Transform for which this is currently updating, or null when not updating.
40 Transform _currentTransform; 42 Transform _currentTransform;
41 43
42 /// The currently resolved entry libraries, or null if nothing is resolved. 44 /// The currently resolved entry libraries, or null if nothing is resolved.
43 List<LibraryElement> _entryLibraries; 45 List<LibraryElement> _entryLibraries;
44 Set<LibraryElement> _libraries; 46 Set<LibraryElement> _libraries;
45 47
46 /// Future indicating when this resolver is done in the current phase. 48 /// Future indicating when this resolver is done in the current phase.
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 var name = dotIndex == -1 ? 222 var name = dotIndex == -1 ?
221 fnName : fnName.substring(dotIndex + 1); 223 fnName : fnName.substring(dotIndex + 1);
222 224
223 return libraries.where((lib) => lib.name == libraryName) 225 return libraries.where((lib) => lib.name == libraryName)
224 .expand((lib) => lib.units) 226 .expand((lib) => lib.units)
225 .expand((unit) => unit.functions) 227 .expand((unit) => unit.functions)
226 .firstWhere((fn) => fn.name == name, 228 .firstWhere((fn) => fn.name == name,
227 orElse: () => null); 229 orElse: () => null);
228 } 230 }
229 231
232 EvaluationResult evaluateConstant(
233 LibraryElement library, Expression expression) {
234 return new ConstantEvaluator(library.source, _context.typeProvider)
235 .evaluate(expression);
236 }
237
230 Uri getImportUri(LibraryElement lib, {AssetId from}) => 238 Uri getImportUri(LibraryElement lib, {AssetId from}) =>
231 _getSourceUri(lib, from: from); 239 _getSourceUri(lib, from: from);
232 240
233 241
234 /// Similar to getImportUri but will get the part URI for parts rather than 242 /// Similar to getImportUri but will get the part URI for parts rather than
235 /// the library URI. 243 /// the library URI.
236 Uri _getSourceUri(Element element, {AssetId from}) { 244 Uri _getSourceUri(Element element, {AssetId from}) {
237 var source = element.source; 245 var source = element.source;
238 if (source is _AssetBasedSource) { 246 if (source is _AssetBasedSource) {
239 return source.getSourceUri(from); 247 return source.getSourceUri(from);
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 623
616 void apply(ChangeSet changeSet) { 624 void apply(ChangeSet changeSet) {
617 if (!source.updateContents(content)) return; 625 if (!source.updateContents(content)) return;
618 if (source._revision == 1 && source._contents != null) { 626 if (source._revision == 1 && source._contents != null) {
619 changeSet.addedSource(source); 627 changeSet.addedSource(source);
620 } else { 628 } else {
621 changeSet.changedSource(source); 629 changeSet.changedSource(source);
622 } 630 }
623 } 631 }
624 } 632 }
OLDNEW
« no previous file with comments | « pkg/code_transformers/lib/src/resolver.dart ('k') | pkg/polymer/CHANGELOG.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698