| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library analyzer2dart.cps_generator; | 5 library analyzer2dart.cps_generator; |
| 6 | 6 |
| 7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
| 8 | 8 |
| 9 import 'package:compiler/implementation/dart_types.dart' as dart2js; |
| 9 import 'package:compiler/implementation/elements/elements.dart' as dart2js; | 10 import 'package:compiler/implementation/elements/elements.dart' as dart2js; |
| 10 import 'package:analyzer/src/generated/source.dart'; | 11 import 'package:analyzer/src/generated/source.dart'; |
| 11 import 'package:analyzer/src/generated/element.dart' as analyzer; | 12 import 'package:analyzer/src/generated/element.dart' as analyzer; |
| 12 | 13 |
| 13 import 'package:compiler/implementation/dart2jslib.dart' | 14 import 'package:compiler/implementation/dart2jslib.dart' |
| 14 show DART_CONSTANT_SYSTEM; | 15 show DART_CONSTANT_SYSTEM; |
| 15 import 'package:compiler/implementation/cps_ir/cps_ir_nodes.dart' as ir; | 16 import 'package:compiler/implementation/cps_ir/cps_ir_nodes.dart' as ir; |
| 16 import 'package:compiler/implementation/cps_ir/cps_ir_builder.dart'; | 17 import 'package:compiler/implementation/cps_ir/cps_ir_builder.dart'; |
| 17 import 'package:compiler/implementation/universe/universe.dart'; | 18 import 'package:compiler/implementation/universe/universe.dart'; |
| 18 | 19 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 } | 76 } |
| 76 | 77 |
| 77 @override | 78 @override |
| 78 ir.Primitive visitDynamicInvocation(MethodInvocation node, | 79 ir.Primitive visitDynamicInvocation(MethodInvocation node, |
| 79 AccessSemantics semantics) { | 80 AccessSemantics semantics) { |
| 80 // TODO(johnniwinther): Handle implicit `this`. | 81 // TODO(johnniwinther): Handle implicit `this`. |
| 81 ir.Primitive receiver = build(semantics.target); | 82 ir.Primitive receiver = build(semantics.target); |
| 82 List<ir.Definition> arguments = visitArguments(node.argumentList); | 83 List<ir.Definition> arguments = visitArguments(node.argumentList); |
| 83 return irBuilder.buildDynamicInvocation( | 84 return irBuilder.buildDynamicInvocation( |
| 84 receiver, | 85 receiver, |
| 85 createSelectorFromMethodInvocation(node, node.methodName.name), | 86 createSelectorFromMethodInvocation( |
| 87 node.argumentList, node.methodName.name), |
| 86 arguments); | 88 arguments); |
| 87 } | 89 } |
| 88 | 90 |
| 89 @override | 91 @override |
| 90 ir.Primitive visitStaticMethodInvocation(MethodInvocation node, | 92 ir.Primitive visitStaticMethodInvocation(MethodInvocation node, |
| 91 AccessSemantics semantics) { | 93 AccessSemantics semantics) { |
| 92 analyzer.Element staticElement = semantics.element; | 94 analyzer.Element staticElement = semantics.element; |
| 93 dart2js.Element element = converter.convertElement(staticElement); | 95 dart2js.Element element = converter.convertElement(staticElement); |
| 94 List<ir.Definition> arguments = visitArguments(node.argumentList); | 96 List<ir.Definition> arguments = visitArguments(node.argumentList); |
| 95 return irBuilder.buildStaticInvocation( | 97 return irBuilder.buildStaticInvocation( |
| 96 element, | 98 element, |
| 97 createSelectorFromMethodInvocation(node, node.methodName.name), | 99 createSelectorFromMethodInvocation( |
| 100 node.argumentList, node.methodName.name), |
| 98 arguments); | 101 arguments); |
| 99 } | 102 } |
| 100 | 103 |
| 101 @override | 104 @override |
| 105 ir.Primitive visitInstanceCreationExpression( |
| 106 InstanceCreationExpression node) { |
| 107 analyzer.Element staticElement = node.staticElement; |
| 108 if (staticElement != null) { |
| 109 dart2js.Element element = converter.convertElement(staticElement); |
| 110 dart2js.DartType type = converter.convertType(node.staticType); |
| 111 List<ir.Definition> arguments = visitArguments(node.argumentList); |
| 112 String name = ''; |
| 113 if (node.constructorName.name != null) { |
| 114 name = node.constructorName.name.name; |
| 115 } |
| 116 return irBuilder.buildConstructorInvocation( |
| 117 element, |
| 118 createSelectorFromMethodInvocation(node.argumentList, name), |
| 119 type, |
| 120 arguments); |
| 121 } |
| 122 return giveUp(node, "Unresolved constructor invocation."); |
| 123 } |
| 124 |
| 125 @override |
| 102 ir.Constant visitNullLiteral(NullLiteral node) { | 126 ir.Constant visitNullLiteral(NullLiteral node) { |
| 103 return irBuilder.buildNullLiteral(); | 127 return irBuilder.buildNullLiteral(); |
| 104 } | 128 } |
| 105 | 129 |
| 106 @override | 130 @override |
| 107 ir.Constant visitBooleanLiteral(BooleanLiteral node) { | 131 ir.Constant visitBooleanLiteral(BooleanLiteral node) { |
| 108 return irBuilder.buildBooleanLiteral(node.value); | 132 return irBuilder.buildBooleanLiteral(node.value); |
| 109 } | 133 } |
| 110 | 134 |
| 111 @override | 135 @override |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 build(node.condition), | 265 build(node.condition), |
| 242 subbuild(node.thenStatement), | 266 subbuild(node.thenStatement), |
| 243 subbuild(node.elseStatement)); | 267 subbuild(node.elseStatement)); |
| 244 } | 268 } |
| 245 | 269 |
| 246 @override | 270 @override |
| 247 visitBlock(Block node) { | 271 visitBlock(Block node) { |
| 248 irBuilder.buildBlock(node.statements, build); | 272 irBuilder.buildBlock(node.statements, build); |
| 249 } | 273 } |
| 250 } | 274 } |
| OLD | NEW |