Chromium Code Reviews| Index: pkg/analyzer2dart/lib/src/tree_shaker.dart |
| diff --git a/pkg/analyzer2dart/lib/src/tree_shaker.dart b/pkg/analyzer2dart/lib/src/tree_shaker.dart |
| index 03a3bf990c6e1abf770b24823f2bde62bf0ddcec..d9ff35c3b79abbfc7f70e0f812e1656cc7abfd42 100644 |
| --- a/pkg/analyzer2dart/lib/src/tree_shaker.dart |
| +++ b/pkg/analyzer2dart/lib/src/tree_shaker.dart |
| @@ -15,9 +15,15 @@ import 'closed_world.dart'; |
| class TreeShaker { |
| List<Element> _queue = <Element>[]; |
| Set<Element> _alreadyEnqueued = new HashSet<Element>(); |
| - ClosedWorld _world = new ClosedWorld(); |
| + ClosedWorld _world; |
| Set<Selector> _selectors = new HashSet<Selector>(); |
| + TreeShaker(FunctionElement mainFunction) |
| + : _world = new ClosedWorld(mainFunction) { |
| + addElement(mainFunction); |
| + } |
| + |
| + |
|
sigurdm
2014/09/08 14:07:15
Double newline
Johnni Winther
2014/09/09 14:21:26
Done.
|
| void addElement(Element element) { |
| if (_alreadyEnqueued.add(element)) { |
| _queue.add(element); |
| @@ -96,6 +102,19 @@ class TreeShaker { |
| } |
| } |
| +Selector createSelectorFromMethodInvocation(MethodInvocation node) { |
| + int arity = 0; |
| + List<String> namedArguments = <String>[]; |
| + for (var x in node.argumentList.arguments) { |
| + if (x is NamedExpression) { |
| + namedArguments.add(x.name.label.name); |
| + } else { |
| + arity++; |
| + } |
| + } |
| + return new Selector.call(node.methodName.name, null, arity, namedArguments); |
| +} |
| + |
| class TreeShakingVisitor extends RecursiveAstVisitor { |
| final TreeShaker treeShaker; |
| @@ -106,17 +125,7 @@ class TreeShakingVisitor extends RecursiveAstVisitor { |
| * a non-static method). |
| */ |
| void handleMethodCall(MethodInvocation node) { |
| - int arity = 0; |
| - List<String> namedArguments = <String>[]; |
| - for (var x in node.argumentList.arguments) { |
| - if (x is NamedExpression) { |
| - namedArguments.add(x.name.label.name); |
| - } else { |
| - arity++; |
| - } |
| - } |
| - treeShaker.addSelector( |
| - new Selector.call(node.methodName.name, null, arity, namedArguments)); |
| + treeShaker.addSelector(createSelectorFromMethodInvocation(node)); |
| } |
| @override |