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 |