Chromium Code Reviews| 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 #include "vm/ast_transformer.h" | 5 #include "vm/ast_transformer.h" |
| 6 | 6 |
| 7 #include "vm/object_store.h" | 7 #include "vm/object_store.h" |
| 8 #include "vm/parser.h" | 8 #include "vm/parser.h" |
| 9 #include "vm/thread.h" | 9 #include "vm/thread.h" |
| 10 | 10 |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 112 return new (Z) LoadLocalNode(ST(node->token_pos()), temp); | 112 return new (Z) LoadLocalNode(ST(node->token_pos()), temp); |
| 113 } | 113 } |
| 114 | 114 |
| 115 | 115 |
| 116 void AwaitTransformer::VisitLiteralNode(LiteralNode* node) { | 116 void AwaitTransformer::VisitLiteralNode(LiteralNode* node) { |
| 117 result_ = node; | 117 result_ = node; |
| 118 } | 118 } |
| 119 | 119 |
| 120 | 120 |
| 121 void AwaitTransformer::VisitTypeNode(TypeNode* node) { | 121 void AwaitTransformer::VisitTypeNode(TypeNode* node) { |
| 122 result_ = new (Z) TypeNode(node->token_pos(), node->type()); | 122 if (node->is_deferred_reference()) { |
|
hausner
2017/02/08 22:41:00
Maybe a short comment and/or pointer to the issue
Florian Schneider
2017/02/08 23:25:23
Done.
| |
| 123 result_ = MakeName(node); | |
| 124 } else { | |
| 125 result_ = node; | |
| 126 } | |
| 123 } | 127 } |
| 124 | 128 |
| 125 | 129 |
| 126 void AwaitTransformer::VisitAwaitNode(AwaitNode* node) { | 130 void AwaitTransformer::VisitAwaitNode(AwaitNode* node) { |
| 127 // Await transformation: | 131 // Await transformation: |
| 128 // | 132 // |
| 129 // :await_temp_var_X = <expr>; | 133 // :await_temp_var_X = <expr>; |
| 130 // AwaitMarker(kNewContinuationState); | 134 // AwaitMarker(kNewContinuationState); |
| 131 // :result_param = _awaitHelper( | 135 // :result_param = _awaitHelper( |
| 132 // :await_temp_var_X, :async_then_callback, :async_catch_error_callback); | 136 // :await_temp_var_X, :async_then_callback, :async_catch_error_callback); |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 507 } | 511 } |
| 508 | 512 |
| 509 | 513 |
| 510 void AwaitTransformer::VisitThrowNode(ThrowNode* node) { | 514 void AwaitTransformer::VisitThrowNode(ThrowNode* node) { |
| 511 AstNode* new_exception = Transform(node->exception()); | 515 AstNode* new_exception = Transform(node->exception()); |
| 512 result_ = MakeName( | 516 result_ = MakeName( |
| 513 new (Z) ThrowNode(node->token_pos(), new_exception, node->stacktrace())); | 517 new (Z) ThrowNode(node->token_pos(), new_exception, node->stacktrace())); |
| 514 } | 518 } |
| 515 | 519 |
| 516 } // namespace dart | 520 } // namespace dart |
| OLD | NEW |