diff options
Diffstat (limited to 'src/compile/loops.c')
| -rw-r--r-- | src/compile/loops.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/compile/loops.c b/src/compile/loops.c index 588be4f0..921f879e 100644 --- a/src/compile/loops.c +++ b/src/compile/loops.c @@ -42,7 +42,6 @@ Text_t compile_for_loop(env_t *env, ast_t *ast) { loop_ctx_t loop_ctx = (loop_ctx_t){ .loop_name = "for", .loop_vars = for_->vars, - .deferred = body_scope->deferred, .next = body_scope->loop_ctx, }; body_scope->loop_ctx = &loop_ctx; @@ -356,7 +355,6 @@ Text_t compile_repeat(env_t *env, ast_t *ast) { env_t *scope = fresh_scope(env); loop_ctx_t loop_ctx = (loop_ctx_t){ .loop_name = "repeat", - .deferred = scope->deferred, .next = env->loop_ctx, }; scope->loop_ctx = &loop_ctx; @@ -373,7 +371,6 @@ Text_t compile_while(env_t *env, ast_t *ast) { env_t *scope = fresh_scope(env); loop_ctx_t loop_ctx = (loop_ctx_t){ .loop_name = "while", - .deferred = scope->deferred, .next = env->loop_ctx, }; scope->loop_ctx = &loop_ctx; @@ -399,11 +396,7 @@ Text_t compile_skip(env_t *env, ast_t *ast) { ctx->skip_label = Texts("skip_", skip_label_count); ++skip_label_count; } - Text_t code = EMPTY_TEXT; - for (deferral_t *deferred = env->deferred; deferred && deferred != ctx->deferred; deferred = deferred->next) - code = Texts(code, compile_statement(deferred->defer_env, deferred->block)); - if (code.length > 0) return Texts("{\n", code, "goto ", ctx->skip_label, ";\n}\n"); - else return Texts("goto ", ctx->skip_label, ";"); + return Texts("goto ", ctx->skip_label, ";"); } } if (env->loop_ctx) code_err(ast, "This is not inside any loop"); @@ -425,11 +418,7 @@ Text_t compile_stop(env_t *env, ast_t *ast) { ctx->stop_label = Texts("stop_", stop_label_count); ++stop_label_count; } - Text_t code = EMPTY_TEXT; - for (deferral_t *deferred = env->deferred; deferred && deferred != ctx->deferred; deferred = deferred->next) - code = Texts(code, compile_statement(deferred->defer_env, deferred->block)); - if (code.length > 0) return Texts("{\n", code, "goto ", ctx->stop_label, ";\n}\n"); - else return Texts("goto ", ctx->stop_label, ";"); + return Texts("goto ", ctx->stop_label, ";"); } } if (env->loop_ctx) code_err(ast, "This is not inside any loop"); |
