Chromium Code Reviews| Index: pkg/code_transformers/lib/src/resolvers.dart |
| diff --git a/pkg/code_transformers/lib/src/resolvers.dart b/pkg/code_transformers/lib/src/resolvers.dart |
| index 4b768d4f075be64b850900b8352d73f446ed0910..7bfd6ecb030bcc7ee049f35ee8f683d9d7497fc9 100644 |
| --- a/pkg/code_transformers/lib/src/resolvers.dart |
| +++ b/pkg/code_transformers/lib/src/resolvers.dart |
| @@ -7,9 +7,13 @@ library code_transformers.src.resolvers; |
| import 'dart:async'; |
| import 'package:barback/barback.dart'; |
| +import 'package:analyzer/src/generated/sdk.dart' show DartSdk; |
| +import 'package:analyzer/src/generated/source.dart' show DartUriResolver; |
| + |
| import 'entry_point.dart'; |
| import 'resolver.dart'; |
| import 'resolver_impl.dart'; |
| +import 'dart_sdk.dart' hide dartSdkDirectory; |
| /// Barback-based code resolvers which maintains up-to-date resolved ASTs for |
| /// the specified code entry points. |
| @@ -21,9 +25,21 @@ import 'resolver_impl.dart'; |
| /// the same Resolvers object to minimize re-parsing the AST. |
| class Resolvers { |
| final Map<AssetId, Resolver> _resolvers = {}; |
| - final String dartSdkDirectory; |
| + final DartSdk dartSdk; |
| + final DartUriResolver dartUriResolver; |
| + |
| + Resolvers(this.dartSdk, this.dartUriResolver); |
| - Resolvers(this.dartSdkDirectory); |
| + factory Resolvers.fromSdkDirectory(dartSdkDirectory) { |
|
blois
2014/06/04 16:31:22
Can these two constructors be swapped to avoid a b
Siggi Cherem (dart-lang)
2014/06/04 21:25:19
Good idea, done.
|
| + var sdk = new DirectoryBasedDartSdkProxy(dartSdkDirectory); |
| + var uriResolver = new DartUriResolverProxy(sdk); |
| + return new Resolvers(sdk, uriResolver); |
| + } |
| + |
| + factory Resolvers.fromMock(Map<String, String> sources) { |
| + var sdk = new MockDartSdk(sources); |
| + return new Resolvers(sdk, new DartUriResolver(sdk)); |
| + } |
| /// Get a resolver for [transform]. If provided, this resolves the code |
| /// starting from each of the assets in [entryPoints]. If not, this resolves |
| @@ -35,7 +51,7 @@ class Resolvers { |
| Future<Resolver> get(Transform transform, [List<AssetId> entryPoints]) { |
| var id = transform.primaryInput.id; |
| var resolver = _resolvers.putIfAbsent(id, |
| - () => new ResolverImpl(dartSdkDirectory)); |
| + () => new ResolverImpl(dartSdk, dartUriResolver)); |
| return resolver.resolve(transform, entryPoints); |
| } |
| } |