diff --git a/selfhost/cmd/wwdump/main.ww b/selfhost/cmd/wwdump/main.ww index 41c8a494..df898541 100644 --- a/selfhost/cmd/wwdump/main.ww +++ b/selfhost/cmd/wwdump/main.ww @@ -114,6 +114,7 @@ export fn main(argc: i32, argv: **u8) i32 = { parserinit(&ps, &l); let f: *node = parsefile(&ps); astprint(1i32, f); + if (ps.errs > 0) { return 1; }; } else { if (mode == 114) { // '-r' — name resolve report let ps: parser; parserinit(&ps, &l); diff --git a/test/tool/wwdump_test.ww b/test/tool/wwdump_test.ww index e8a9911d..c90b45b4 100644 --- a/test/tool/wwdump_test.ww +++ b/test/tool/wwdump_test.ww @@ -135,6 +135,10 @@ fn dumprow(td: str, name: str, mode: str, src: str, "package main;\nexport fn main() i32 = { return 0; };\n"); let co: testenv.commandout; + dumprow(td, "bad_a", "-a", badp, &co); + if (co.code == 0) { + fail("bad_a", "AST dump returned rc=0 on parse-errored input"); + }; dumprow(td, "bad_c", "-c", badp, &co); if (co.code == 0 || co.stdout.len != 0) { fail("bad_c",