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

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

Issue 174053004: Revert "Adding package:code_transformers for unifying common transformers code" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 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 // 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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library code_transformers.src.resolver_transformer;
6
7 import 'dart:async';
8 import 'package:barback/barback.dart';
9
10 import 'resolver.dart';
11 import 'resolver_impl.dart';
12
13 /// Filter for whether the specified asset is an entry point to the Dart
14 /// application.
15 typedef EntryPointFilter(Asset input);
16
17 /// Transformer which maintains up-to-date resolved ASTs for the specified
18 /// code entry points.
19 ///
20 /// This can used by transformers dependent on resolved ASTs which can reference
21 /// this transformer to get the resolver needed.
22 ///
23 /// This transformer must be in a phase before any dependent transformers. The
24 /// resolve AST is automatically updated any time any dependent assets are
25 /// changed.
26 ///
27 /// This will only resolve the AST for code beginning from assets which are
28 /// accepted by [entryPointFilter].
29 ///
30 /// If multiple transformers rely on a resolved AST they should (ideally) share
31 /// the same ResolverTransformer to avoid re-parsing the AST.
32 class ResolverTransformer extends Transformer {
33 final Map<AssetId, Resolver> _resolvers = {};
34 final EntryPointFilter entryPointFilter;
35 final String dartSdkDirectory;
36
37 ResolverTransformer(this.dartSdkDirectory, this.entryPointFilter);
38
39 Future<bool> isPrimary(Asset input) =>
40 new Future.value(entryPointFilter(input));
41
42 /// Updates the resolved AST for the primary input of the transform.
43 Future apply(Transform transform) {
44 var resolver = getResolver(transform.primaryInput.id);
45
46 return resolver.updateSources(transform).then((_) {
47 transform.addOutput(transform.primaryInput);
48 return null;
49 });
50 }
51
52 /// Get a resolver for the AST starting from [id].
53 Resolver getResolver(AssetId id) =>
54 _resolvers.putIfAbsent(id, () => new ResolverImpl(id, dartSdkDirectory));
55 }
OLDNEW
« no previous file with comments | « pkg/code_transformers/lib/src/resolver_impl.dart ('k') | pkg/code_transformers/lib/src/test_harness.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698