Chromium Code Reviews| Index: pkg/code_transformers/lib/src/resolver_impl.dart |
| diff --git a/pkg/code_transformers/lib/src/resolver_impl.dart b/pkg/code_transformers/lib/src/resolver_impl.dart |
| index 52f803326eb9375b37ebeb897388ca7929c2346e..ededdff17922a33a3ff9eb2ef6b674c54aa34b11 100644 |
| --- a/pkg/code_transformers/lib/src/resolver_impl.dart |
| +++ b/pkg/code_transformers/lib/src/resolver_impl.dart |
| @@ -116,7 +116,9 @@ class ResolverImpl implements Resolver { |
| visiting.add(transform.readInputAsString(assetId).then((contents) { |
| var source = sources[assetId]; |
| if (source == null) { |
| - source = new _AssetBasedSource(assetId, this); |
| + // TODO(scheglov) how to get Uri here? |
|
Siggi Cherem (dart-lang)
2014/08/04 22:43:55
You might be able to basically use the logic we ha
|
| + Uri uri = null; |
| + source = new _AssetBasedSource(assetId, this, uri); |
| sources[assetId] = source; |
| } |
| source.updateDependencies(contents); |
| @@ -298,6 +300,9 @@ class _AssetBasedSource extends Source { |
| /// The resolver this is being used in. |
| final ResolverImpl _resolver; |
| + /// The URI from which this source was originally derived. |
| + final Uri uri; |
| + |
| /// Cache of dependent asset IDs, to avoid re-parsing the AST. |
| Iterable<AssetId> _dependentAssets; |
| @@ -307,7 +312,7 @@ class _AssetBasedSource extends Source { |
| /// The file contents. |
| String _contents; |
| - _AssetBasedSource(this.assetId, this._resolver); |
| + _AssetBasedSource(this.assetId, this._resolver, this.uri); |
| /// Update the dependencies of this source. This parses [contents] but avoids |
| /// any analyzer resolution. |
| @@ -377,7 +382,7 @@ class _AssetBasedSource extends Source { |
| bool get isInSystemLibrary => false; |
| - Source resolveRelative(Uri relativeUri) { |
| + Uri resolveRelative(Uri relativeUri) { |
| var id = _resolve(assetId, relativeUri.toString(), _logger, null); |
| if (id == null) return null; |
| @@ -386,7 +391,7 @@ class _AssetBasedSource extends Source { |
| if (source == null) { |
| _logger.error('Could not load asset $id'); |
| } |
| - return source; |
| + return source.uri; |
| } |
| /// For logging errors. |
| @@ -431,7 +436,7 @@ class _AssetUriResolver implements UriResolver { |
| // Analyzer expects that sources which are referenced but do not exist yet |
| // still exist, so just make an empty source. |
| if (source == null) { |
| - source = new _AssetBasedSource(assetId, _resolver); |
| + source = new _AssetBasedSource(assetId, _resolver, uri); |
|
Siggi Cherem (dart-lang)
2014/08/04 22:43:55
if this is intended to be the resolved uri, then I
|
| _resolver.sources[assetId] = source; |
| } |
| return source; |