| ... | @@ -319,6 +319,21 @@ fn reachableExpr( | ... | @@ -319,6 +319,21 @@ fn reachableExpr( |
| 319 | node: Ast.Node.Index, | 319 | node: Ast.Node.Index, |
| 320 | reachable_node: Ast.Node.Index, | 320 | reachable_node: Ast.Node.Index, |
| 321 | ) InnerError!Zir.Inst.Ref { | 321 | ) InnerError!Zir.Inst.Ref { |
| | 322 | return reachableExprComptime(gz, scope, rl, node, reachable_node, false); |
| | 323 | } |
| | 324 | |
| | 325 | fn reachableExprComptime( |
| | 326 | gz: *GenZir, |
| | 327 | scope: *Scope, |
| | 328 | rl: ResultLoc, |
| | 329 | node: Ast.Node.Index, |
| | 330 | reachable_node: Ast.Node.Index, |
| | 331 | force_comptime: bool, |
| | 332 | ) InnerError!Zir.Inst.Ref { |
| | 333 | const prev_force_comptime = gz.force_comptime; |
| | 334 | gz.force_comptime = prev_force_comptime or force_comptime; |
| | 335 | defer gz.force_comptime = prev_force_comptime; |
| | 336 | |
| 322 | const result_inst = try expr(gz, scope, rl, node); | 337 | const result_inst = try expr(gz, scope, rl, node); |
| 323 | if (gz.refIsNoReturn(result_inst)) { | 338 | if (gz.refIsNoReturn(result_inst)) { |
| 324 | try gz.astgen.appendErrorNodeNotes(reachable_node, "unreachable code", .{}, &[_]u32{ | 339 | try gz.astgen.appendErrorNodeNotes(reachable_node, "unreachable code", .{}, &[_]u32{ |
| ... | @@ -2758,7 +2773,7 @@ fn varDecl( | ... | @@ -2758,7 +2773,7 @@ fn varDecl( |
| 2758 | resolve_inferred_alloc = alloc; | 2773 | resolve_inferred_alloc = alloc; |
| 2759 | break :a .{ .alloc = alloc, .result_loc = .{ .inferred_ptr = alloc } }; | 2774 | break :a .{ .alloc = alloc, .result_loc = .{ .inferred_ptr = alloc } }; |
| 2760 | }; | 2775 | }; |
| 2761 | _ = try reachableExpr(gz, scope, var_data.result_loc, var_decl.ast.init_node, node); | 2776 | _ = try reachableExprComptime(gz, scope, var_data.result_loc, var_decl.ast.init_node, node, is_comptime); |
| 2762 | if (resolve_inferred_alloc != .none) { | 2777 | if (resolve_inferred_alloc != .none) { |
| 2763 | _ = try gz.addUnNode(.resolve_inferred_alloc, resolve_inferred_alloc, node); | 2778 | _ = try gz.addUnNode(.resolve_inferred_alloc, resolve_inferred_alloc, node); |
| 2764 | } | 2779 | } |