| ... | ... | @@ -500,68 +500,72 @@ pub const Node = struct { |
| 500 | 500 | var n = base; |
| 501 | 501 | while (true) { |
| 502 | 502 | switch (n.id) { |
| 503 | | Id.Root, |
| 504 | | Id.ContainerField, |
| 505 | | Id.ParamDecl, |
| 506 | | Id.Block, |
| 507 | | Id.Payload, |
| 508 | | Id.PointerPayload, |
| 509 | | Id.PointerIndexPayload, |
| 510 | | Id.Switch, |
| 511 | | Id.SwitchCase, |
| 512 | | Id.SwitchElse, |
| 513 | | Id.FieldInitializer, |
| 514 | | Id.DocComment, |
| 515 | | Id.TestDecl, |
| 503 | .Root, |
| 504 | .ContainerField, |
| 505 | .ParamDecl, |
| 506 | .Block, |
| 507 | .Payload, |
| 508 | .PointerPayload, |
| 509 | .PointerIndexPayload, |
| 510 | .Switch, |
| 511 | .SwitchCase, |
| 512 | .SwitchElse, |
| 513 | .FieldInitializer, |
| 514 | .DocComment, |
| 515 | .TestDecl, |
| 516 | 516 | => return false, |
| 517 | | Id.While => { |
| 517 | .While => { |
| 518 | 518 | const while_node = @fieldParentPtr(While, "base", n); |
| 519 | 519 | if (while_node.@"else") |@"else"| { |
| 520 | 520 | n = &@"else".base; |
| 521 | 521 | continue; |
| 522 | 522 | } |
| 523 | 523 | |
| 524 | | return while_node.body.id != Id.Block; |
| 524 | return while_node.body.id != .Block; |
| 525 | 525 | }, |
| 526 | | Id.For => { |
| 526 | .For => { |
| 527 | 527 | const for_node = @fieldParentPtr(For, "base", n); |
| 528 | 528 | if (for_node.@"else") |@"else"| { |
| 529 | 529 | n = &@"else".base; |
| 530 | 530 | continue; |
| 531 | 531 | } |
| 532 | 532 | |
| 533 | | return for_node.body.id != Id.Block; |
| 533 | return for_node.body.id != .Block; |
| 534 | 534 | }, |
| 535 | | Id.If => { |
| 535 | .If => { |
| 536 | 536 | const if_node = @fieldParentPtr(If, "base", n); |
| 537 | 537 | if (if_node.@"else") |@"else"| { |
| 538 | 538 | n = &@"else".base; |
| 539 | 539 | continue; |
| 540 | 540 | } |
| 541 | 541 | |
| 542 | | return if_node.body.id != Id.Block; |
| 542 | return if_node.body.id != .Block; |
| 543 | 543 | }, |
| 544 | | Id.Else => { |
| 544 | .Else => { |
| 545 | 545 | const else_node = @fieldParentPtr(Else, "base", n); |
| 546 | 546 | n = else_node.body; |
| 547 | 547 | continue; |
| 548 | 548 | }, |
| 549 | | Id.Defer => { |
| 549 | .Defer => { |
| 550 | 550 | const defer_node = @fieldParentPtr(Defer, "base", n); |
| 551 | | return defer_node.expr.id != Id.Block; |
| 551 | return defer_node.expr.id != .Block; |
| 552 | 552 | }, |
| 553 | | Id.Comptime => { |
| 553 | .Comptime => { |
| 554 | 554 | const comptime_node = @fieldParentPtr(Comptime, "base", n); |
| 555 | | return comptime_node.expr.id != Id.Block; |
| 555 | return comptime_node.expr.id != .Block; |
| 556 | 556 | }, |
| 557 | | Id.Suspend => { |
| 557 | .Suspend => { |
| 558 | 558 | const suspend_node = @fieldParentPtr(Suspend, "base", n); |
| 559 | 559 | if (suspend_node.body) |body| { |
| 560 | | return body.id != Id.Block; |
| 560 | return body.id != .Block; |
| 561 | 561 | } |
| 562 | 562 | |
| 563 | 563 | return true; |
| 564 | 564 | }, |
| 565 | .Noasync => { |
| 566 | const noasync_node = @fieldParentPtr(Noasync, "base", n); |
| 567 | return noasync_node.expr.id != .Block; |
| 568 | }, |
| 565 | 569 | else => return true, |
| 566 | 570 | } |
| 567 | 571 | } |