| ... | ... | @@ -249,9 +249,9 @@ pub const bool_rl: ResultLoc = .{ .ty = .bool_type }; |
| 249 | 249 | fn typeExpr(gz: *GenZir, scope: *Scope, type_node: ast.Node.Index) InnerError!Zir.Inst.Ref { |
| 250 | 250 | const prev_force_comptime = gz.force_comptime; |
| 251 | 251 | gz.force_comptime = true; |
| 252 | | const e = expr(gz, scope, .{ .ty = .type_type }, type_node); |
| 253 | | gz.force_comptime = prev_force_comptime; |
| 254 | | return e; |
| 252 | defer gz.force_comptime = prev_force_comptime; |
| 253 | |
| 254 | return expr(gz, scope, .{ .ty = .type_type }, type_node); |
| 255 | 255 | } |
| 256 | 256 | |
| 257 | 257 | fn lvalExpr(gz: *GenZir, scope: *Scope, node: ast.Node.Index) InnerError!Zir.Inst.Ref { |
| ... | ... | @@ -1465,9 +1465,9 @@ fn comptimeExpr( |
| 1465 | 1465 | ) InnerError!Zir.Inst.Ref { |
| 1466 | 1466 | const prev_force_comptime = gz.force_comptime; |
| 1467 | 1467 | gz.force_comptime = true; |
| 1468 | | const result = try expr(gz, scope, rl, node); |
| 1469 | | gz.force_comptime = prev_force_comptime; |
| 1470 | | return result; |
| 1468 | defer gz.force_comptime = prev_force_comptime; |
| 1469 | |
| 1470 | return expr(gz, scope, rl, node); |
| 1471 | 1471 | } |
| 1472 | 1472 | |
| 1473 | 1473 | /// This one is for an actual `comptime` syntax, and will emit a compile error if |
| ... | ... | @@ -2121,8 +2121,8 @@ fn genDefers( |
| 2121 | 2121 | const expr_node = node_datas[defer_scope.defer_node].rhs; |
| 2122 | 2122 | const prev_in_defer = gz.in_defer; |
| 2123 | 2123 | gz.in_defer = true; |
| 2124 | defer gz.in_defer = prev_in_defer; |
| 2124 | 2125 | try unusedResultExpr(gz, defer_scope.parent, expr_node); |
| 2125 | | gz.in_defer = prev_in_defer; |
| 2126 | 2126 | }, |
| 2127 | 2127 | .defer_error => { |
| 2128 | 2128 | const defer_scope = scope.cast(Scope.Defer).?; |
| ... | ... | @@ -2131,8 +2131,8 @@ fn genDefers( |
| 2131 | 2131 | const expr_node = node_datas[defer_scope.defer_node].rhs; |
| 2132 | 2132 | const prev_in_defer = gz.in_defer; |
| 2133 | 2133 | gz.in_defer = true; |
| 2134 | defer gz.in_defer = prev_in_defer; |
| 2134 | 2135 | try unusedResultExpr(gz, defer_scope.parent, expr_node); |
| 2135 | | gz.in_defer = prev_in_defer; |
| 2136 | 2136 | }, |
| 2137 | 2137 | .namespace => unreachable, |
| 2138 | 2138 | .top => unreachable, |
| ... | ... | @@ -2887,6 +2887,7 @@ fn fnDecl( |
| 2887 | 2887 | |
| 2888 | 2888 | const prev_fn_block = astgen.fn_block; |
| 2889 | 2889 | astgen.fn_block = &fn_gz; |
| 2890 | defer astgen.fn_block = prev_fn_block; |
| 2890 | 2891 | |
| 2891 | 2892 | // Iterate over the parameters. We put the param names as the first N |
| 2892 | 2893 | // items inside `extra` so that debug info later can refer to the parameter names |
| ... | ... | @@ -2938,8 +2939,6 @@ fn fnDecl( |
| 2938 | 2939 | _ = try fn_gz.addUnTok(.ret_coerce, .void_value, tree.lastToken(body_node)); |
| 2939 | 2940 | } |
| 2940 | 2941 | |
| 2941 | | astgen.fn_block = prev_fn_block; |
| 2942 | | |
| 2943 | 2942 | break :func try decl_gz.addFunc(.{ |
| 2944 | 2943 | .src_node = decl_node, |
| 2945 | 2944 | .ret_ty = return_type_inst, |
| ... | ... | @@ -3276,6 +3275,7 @@ fn testDecl( |
| 3276 | 3275 | |
| 3277 | 3276 | const prev_fn_block = astgen.fn_block; |
| 3278 | 3277 | astgen.fn_block = &fn_block; |
| 3278 | defer astgen.fn_block = prev_fn_block; |
| 3279 | 3279 | |
| 3280 | 3280 | const block_result = try expr(&fn_block, &fn_block.base, .none, body_node); |
| 3281 | 3281 | if (fn_block.instructions.items.len == 0 or !fn_block.refIsNoReturn(block_result)) { |
| ... | ... | @@ -3284,8 +3284,6 @@ fn testDecl( |
| 3284 | 3284 | _ = try fn_block.addUnTok(.ret_coerce, .void_value, tree.lastToken(body_node)); |
| 3285 | 3285 | } |
| 3286 | 3286 | |
| 3287 | | astgen.fn_block = prev_fn_block; |
| 3288 | | |
| 3289 | 3287 | const func_inst = try decl_block.addFunc(.{ |
| 3290 | 3288 | .src_node = node, |
| 3291 | 3289 | .ret_ty = .void_type, |