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

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

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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
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 parseDirectives; 8 import 'package:analyzer/analyzer.dart' show parseDirectives;
9 import 'package:analyzer/src/generated/ast.dart' hide ConstantEvaluator; 9 import 'package:analyzer/src/generated/ast.dart' hide ConstantEvaluator;
10 import 'package:analyzer/src/generated/constant.dart' 10 import 'package:analyzer/src/generated/constant.dart'
(...skipping 13 matching lines...) Expand all
24 24
25 // We should always be using url paths here since it's always Dart/pub code. 25 // We should always be using url paths here since it's always Dart/pub code.
26 final path = native_path.url; 26 final path = native_path.url;
27 27
28 /// Resolves and updates an AST based on Barback-based assets. 28 /// Resolves and updates an AST based on Barback-based assets.
29 /// 29 ///
30 /// This also provides a handful of useful APIs for traversing and working 30 /// This also provides a handful of useful APIs for traversing and working
31 /// with the resolved AST. 31 /// with the resolved AST.
32 class ResolverImpl implements Resolver { 32 class ResolverImpl implements Resolver {
33 /// Cache of all asset sources currently referenced. 33 /// Cache of all asset sources currently referenced.
34 final Map<AssetId, _AssetBasedSource> sources = <AssetId, _AssetBasedSource>{ 34 final Map<AssetId, _AssetBasedSource> sources =
35 }; 35 <AssetId, _AssetBasedSource>{};
36 36
37 final InternalAnalysisContext _context = 37 final InternalAnalysisContext _context =
38 AnalysisEngine.instance.createAnalysisContext(); 38 AnalysisEngine.instance.createAnalysisContext();
39 39
40 /// Transform for which this is currently updating, or null when not updating. 40 /// Transform for which this is currently updating, or null when not updating.
41 Transform _currentTransform; 41 Transform _currentTransform;
42 42
43 /// The currently resolved entry libraries, or null if nothing is resolved. 43 /// The currently resolved entry libraries, or null if nothing is resolved.
44 List<LibraryElement> _entryLibraries; 44 List<LibraryElement> _entryLibraries;
45 Set<LibraryElement> _libraries; 45 Set<LibraryElement> _libraries;
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 var source = _resolver.sources[id]; 399 var source = _resolver.sources[id];
400 if (source == null) { 400 if (source == null) {
401 _logger.error('Could not load asset $id'); 401 _logger.error('Could not load asset $id');
402 } 402 }
403 return source.uri; 403 return source.uri;
404 } 404 }
405 405
406 /// For logging errors. 406 /// For logging errors.
407 SourceSpan _getSpan(AstNode node, [String contents]) => 407 SourceSpan _getSpan(AstNode node, [String contents]) =>
408 _getSourceFile(contents).span(node.offset, node.end); 408 _getSourceFile(contents).span(node.offset, node.end);
409
409 /// For logging errors. 410 /// For logging errors.
410 SourceFile _getSourceFile([String contents]) { 411 SourceFile _getSourceFile([String contents]) {
411 var uri = assetIdToUri(assetId); 412 var uri = assetIdToUri(assetId);
412 var path = uri != null ? uri : assetId.path; 413 var path = uri != null ? uri : assetId.path;
413 return new SourceFile(contents != null ? contents : rawContents, url: path); 414 return new SourceFile(contents != null ? contents : rawContents, url: path);
414 } 415 }
415 } 416 }
416 417
417 /// Implementation of Analyzer's UriResolver for Barback based assets. 418 /// Implementation of Analyzer's UriResolver for Barback based assets.
418 class _AssetUriResolver implements UriResolver { 419 class _AssetUriResolver implements UriResolver {
419 final ResolverImpl _resolver; 420 final ResolverImpl _resolver;
420 _AssetUriResolver(this._resolver); 421 _AssetUriResolver(this._resolver);
421 422
422 Source resolveAbsolute(Uri uri) { 423 Source resolveAbsolute(Uri uri, [Uri actualUri]) {
423 assert(uri.scheme != 'dart'); 424 assert(uri.scheme != 'dart');
424 var assetId; 425 var assetId;
425 if (uri.scheme == 'asset') { 426 if (uri.scheme == 'asset') {
426 var parts = path.split(uri.path); 427 var parts = path.split(uri.path);
427 assetId = new AssetId(parts[0], path.joinAll(parts.skip(1))); 428 assetId = new AssetId(parts[0], path.joinAll(parts.skip(1)));
428 } else { 429 } else {
429 assetId = _resolve(null, uri.toString(), logger, null); 430 assetId = _resolve(null, uri.toString(), logger, null);
430 if (assetId == null) { 431 if (assetId == null) {
431 logger.error('Unable to resolve asset ID for "$uri"'); 432 logger.error('Unable to resolve asset ID for "$uri"');
432 return null; 433 return null;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 545
545 void apply(ChangeSet changeSet) { 546 void apply(ChangeSet changeSet) {
546 if (!source.updateContents(content)) return; 547 if (!source.updateContents(content)) return;
547 if (source._revision == 1 && source._contents != null) { 548 if (source._revision == 1 && source._contents != null) {
548 changeSet.addedSource(source); 549 changeSet.addedSource(source);
549 } else { 550 } else {
550 changeSet.changedSource(source); 551 changeSet.changedSource(source);
551 } 552 }
552 } 553 }
553 } 554 }
OLDNEW
« no previous file with comments | « packages/code_transformers/lib/src/resolver.dart ('k') | packages/code_transformers/lib/src/resolvers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698