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 code_generator; | 5 library code_generator; |
6 | 6 |
7 import 'glue.dart'; | 7 import 'glue.dart'; |
8 | 8 |
9 import '../../tree_ir/tree_ir_nodes.dart' as tree_ir; | 9 import '../../tree_ir/tree_ir_nodes.dart' as tree_ir; |
10 import '../../js/js.dart' as js; | 10 import '../../js/js.dart' as js; |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 return giveup(node); | 417 return giveup(node); |
418 // TODO: implement FieldInitializer | 418 // TODO: implement FieldInitializer |
419 } | 419 } |
420 | 420 |
421 @override | 421 @override |
422 js.Expression visitSuperInitializer(tree_ir.SuperInitializer node) { | 422 js.Expression visitSuperInitializer(tree_ir.SuperInitializer node) { |
423 return giveup(node); | 423 return giveup(node); |
424 // TODO: implement SuperInitializer | 424 // TODO: implement SuperInitializer |
425 } | 425 } |
426 | 426 |
| 427 @override |
| 428 js.Expression visitCreateBox(tree_ir.CreateBox node) { |
| 429 return new js.ObjectInitializer([]); |
| 430 } |
| 431 |
| 432 @override |
| 433 js.Expression visitCreateClosureClass(tree_ir.CreateClosureClass node) { |
| 434 registry.registerInstantiatedClass(node.classElement); |
| 435 return new js.New(glue.closureClassConstructorAccess(node.classElement), |
| 436 node.arguments.map(visitExpression).toList()); |
| 437 } |
| 438 |
| 439 @override |
| 440 js.Expression visitGetField(tree_ir.GetField node) { |
| 441 return new js.PropertyAccess.field( |
| 442 visitExpression(node.object), |
| 443 glue.instanceFieldPropertyName(node.field)); |
| 444 } |
| 445 |
| 446 @override |
| 447 void visitSetField(tree_ir.SetField node) { |
| 448 js.PropertyAccess field = |
| 449 new js.PropertyAccess.field( |
| 450 visitExpression(node.object), |
| 451 glue.instanceFieldPropertyName(node.field)); |
| 452 js.Assignment asn = new js.Assignment(field, visitExpression(node.value)); |
| 453 accumulator.add(new js.ExpressionStatement(asn)); |
| 454 visitStatement(node.next); |
| 455 } |
427 } | 456 } |
OLD | NEW |