| ... | @@ -1294,8 +1294,13 @@ fn continueExpr(parent_gz: *GenZir, parent_scope: *Scope, node: ast.Node.Index) | ... | @@ -1294,8 +1294,13 @@ fn continueExpr(parent_gz: *GenZir, parent_scope: *Scope, node: ast.Node.Index) |
| 1294 | }, | 1294 | }, |
| 1295 | .local_val => scope = scope.cast(Scope.LocalVal).?.parent, | 1295 | .local_val => scope = scope.cast(Scope.LocalVal).?.parent, |
| 1296 | .local_ptr => scope = scope.cast(Scope.LocalPtr).?.parent, | 1296 | .local_ptr => scope = scope.cast(Scope.LocalPtr).?.parent, |
| 1297 | .defer_normal => @panic("TODO continue/defer"), | 1297 | .defer_normal => { |
| 1298 | .defer_error => @panic("TODO continue/defer"), | 1298 | const defer_scope = scope.cast(Scope.Defer).?; |
| | 1299 | scope = defer_scope.parent; |
| | 1300 | const expr_node = node_datas[defer_scope.defer_node].rhs; |
| | 1301 | try unusedResultExpr(parent_gz, defer_scope.parent, expr_node); |
| | 1302 | }, |
| | 1303 | .defer_error => scope = scope.cast(Scope.LocalPtr).?.parent, |
| 1299 | else => if (break_label != 0) { | 1304 | else => if (break_label != 0) { |
| 1300 | const label_name = try astgen.identifierTokenString(break_label); | 1305 | const label_name = try astgen.identifierTokenString(break_label); |
| 1301 | return astgen.failTok(break_label, "label not found: '{s}'", .{label_name}); | 1306 | return astgen.failTok(break_label, "label not found: '{s}'", .{label_name}); |