authorgravatar for kt@connectfree.co.jpkristopher tate <kt@connectfree.co.jp> 2018-07-29 17:10:48+09:00
committergravatar for kt@connectfree.co.jpkristopher tate <kt@connectfree.co.jp> 2018-08-02 16:50:08+09:00
logb3cd65d56e2efc3e0f67461dbad75747b2db3aa7
tree33cb945374ef6ecc1631718db4bb090f3162c5c5
parent5e5685c1174350b00ebf3e9ac49e244fa38fc0ac

src/ir.cpp: remove promise_symbol from suspend;

Tracking Issue #1296 ;

1 files changed, 1 insertions(+), 12 deletions(-)

src/ir.cpp+1-12
...@@ -7096,19 +7096,8 @@ static IrInstruction *ir_gen_suspend(IrBuilder *irb, Scope *parent_scope, AstNod...@@ -7096,19 +7096,8 @@ static IrInstruction *ir_gen_suspend(IrBuilder *irb, Scope *parent_scope, AstNod
7096 if (node->data.suspend.block == nullptr) {7096 if (node->data.suspend.block == nullptr) {
7097 suspend_code = ir_build_coro_suspend(irb, parent_scope, node, nullptr, const_bool_false);7097 suspend_code = ir_build_coro_suspend(irb, parent_scope, node, nullptr, const_bool_false);
7098 } else {7098 } else {
7099 assert(node->data.suspend.promise_symbol != nullptr);
7100 assert(node->data.suspend.promise_symbol->type == NodeTypeSymbol);
7101 Buf *promise_symbol_name = node->data.suspend.promise_symbol->data.symbol_expr.symbol;
7102 Scope *child_scope;7099 Scope *child_scope;
7103 if (!buf_eql_str(promise_symbol_name, "_")) {7100 ScopeSuspend *suspend_scope = create_suspend_scope(node, parent_scope);
7104 VariableTableEntry *promise_var = ir_create_var(irb, node, parent_scope, promise_symbol_name,
7105 true, true, false, const_bool_false);
7106 ir_build_var_decl(irb, parent_scope, node, promise_var, nullptr, nullptr, irb->exec->coro_handle);
7107 child_scope = promise_var->child_scope;
7108 } else {
7109 child_scope = parent_scope;
7110 }
7111 ScopeSuspend *suspend_scope = create_suspend_scope(node, child_scope);
7112 suspend_scope->resume_block = resume_block;7101 suspend_scope->resume_block = resume_block;
7113 child_scope = &suspend_scope->base;7102 child_scope = &suspend_scope->base;
7114 IrInstruction *save_token = ir_build_coro_save(irb, child_scope, node, irb->exec->coro_handle);7103 IrInstruction *save_token = ir_build_coro_save(irb, child_scope, node, irb->exec->coro_handle);