diff --git a/ast/walk.go b/ast/walk.go index 521445b..4422930 100644 --- a/ast/walk.go +++ b/ast/walk.go @@ -38,6 +38,7 @@ func Walk(v Visitor, n Node) { Walk(v, n.Right) } case *BadExpression: + case *BadStatement: case *BinaryExpression: if n != nil { Walk(v, n.Left) diff --git a/ast/walk_test.go b/ast/walk_test.go index 1748c67..d4f23e9 100644 --- a/ast/walk_test.go +++ b/ast/walk_test.go @@ -136,3 +136,22 @@ func Test_issue261(t *testing.T) { }) } } + +func TestBadStatement(t *testing.T) { + source := ` + var abc; + break; do { + } while(true); +` + program, err := parser.ParseFile(nil, "", source, 0) + require.ErrorContains(t, err, "Illegal break statement") + + w := &walker{ + source: source, + seen: make(map[ast.Node]struct{}), + } + + require.NotPanics(t, func() { + ast.Walk(w, program) + }) +}