| OLD | NEW |
| (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 analyzer2dart.cps_generator; |
| 6 |
| 7 import 'package:analyzer/analyzer.dart'; |
| 8 |
| 9 import 'package:compiler/implementation/elements/elements.dart' as dart2js; |
| 10 import 'package:analyzer/src/generated/element.dart' as analyzer; |
| 11 |
| 12 import 'package:compiler/implementation/cps_ir/cps_ir_nodes.dart' as ir; |
| 13 import 'package:compiler/implementation/cps_ir/cps_ir_builder.dart'; |
| 14 |
| 15 import 'element_converter.dart'; |
| 16 import 'tree_shaker.dart'; |
| 17 |
| 18 |
| 19 class CpsGeneratingVisitor extends RecursiveAstVisitor<ir.Node> { |
| 20 final ElementConverter elementConverter; |
| 21 final IrBuilder irBuilder = new IrBuilder(); |
| 22 |
| 23 CpsGeneratingVisitor(this.elementConverter); |
| 24 |
| 25 @override |
| 26 ir.FunctionDefinition visitFunctionDeclaration(FunctionDeclaration node) { |
| 27 analyzer.FunctionElement function = node.element; |
| 28 super.visitFunctionDeclaration(node); |
| 29 return irBuilder.buildFunctionDefinition( |
| 30 elementConverter.convertElement(function), |
| 31 const [], const [], const []); |
| 32 } |
| 33 |
| 34 @override |
| 35 visitMethodInvocation(MethodInvocation node) { |
| 36 analyzer.Element staticElement = node.methodName.staticElement; |
| 37 if (staticElement != null) { |
| 38 dart2js.Element element = elementConverter.convertElement(staticElement); |
| 39 return irBuilder.buildStaticInvocation( |
| 40 element, createSelectorFromMethodInvocation(node), []); |
| 41 } |
| 42 } |
| 43 } |
| OLD | NEW |