From 5ad48851ed3c40d5b7c78313eebb691f31124da3 Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Fri, 21 May 2021 17:04:27 -0400 Subject: [PATCH] Allow error messages for subsequent syntax errors (#892) Fixes #891 --- src/asm/parser.y | 1 + test/asm/label-macro-arg.err | 4 +++- test/asm/syntax-error-after-syntax-error.asm | 10 ++++++++++ test/asm/syntax-error-after-syntax-error.err | 11 +++++++++++ test/asm/syntax-error-after-syntax-error.out | 2 ++ test/asm/syntax-error-after-syntax-error.simple.err | 11 +++++++++++ 6 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 test/asm/syntax-error-after-syntax-error.asm create mode 100644 test/asm/syntax-error-after-syntax-error.err create mode 100644 test/asm/syntax-error-after-syntax-error.out create mode 100644 test/asm/syntax-error-after-syntax-error.simple.err diff --git a/src/asm/parser.y b/src/asm/parser.y index 48afd9d4..a675d0a9 100644 --- a/src/asm/parser.y +++ b/src/asm/parser.y @@ -686,6 +686,7 @@ line : plain_directive endofline | line_directive /* Directives that manage newlines themselves */ | error endofline { /* Continue parsing the next line on a syntax error */ fstk_StopRept(); + yyerrok; } ; diff --git a/test/asm/label-macro-arg.err b/test/asm/label-macro-arg.err index 240e8651..0153739a 100644 --- a/test/asm/label-macro-arg.err +++ b/test/asm/label-macro-arg.err @@ -1,6 +1,8 @@ ERROR: label-macro-arg.asm(38) -> label-macro-arg.asm::test_char(25): syntax error, unexpected = while expanding symbol "VAR_DEF" +ERROR: label-macro-arg.asm(38) -> label-macro-arg.asm::test_char(26): + syntax error, unexpected = ERROR: label-macro-arg.asm(38) -> label-macro-arg.asm::test_char(29): Interpolated symbol "sizeof_.something" does not exist ERROR: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(25): @@ -16,4 +18,4 @@ ERROR: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(29): Invalid format spec 'sizeof_' ERROR: label-macro-arg.asm(39) -> label-macro-arg.asm::test_char(29): Interpolated symbol "something" does not exist -error: Assembly aborted (8 errors)! +error: Assembly aborted (9 errors)! diff --git a/test/asm/syntax-error-after-syntax-error.asm b/test/asm/syntax-error-after-syntax-error.asm new file mode 100644 index 00000000..59ba1e43 --- /dev/null +++ b/test/asm/syntax-error-after-syntax-error.asm @@ -0,0 +1,10 @@ +MACRO mac + println "got {d:_NARG} args" +ENDM + mac + mac 42 +notmac +mac +mac 42 +mac:: +mac :: diff --git a/test/asm/syntax-error-after-syntax-error.err b/test/asm/syntax-error-after-syntax-error.err new file mode 100644 index 00000000..a7f4440f --- /dev/null +++ b/test/asm/syntax-error-after-syntax-error.err @@ -0,0 +1,11 @@ +ERROR: syntax-error-after-syntax-error.asm(6): + syntax error, unexpected newline +ERROR: syntax-error-after-syntax-error.asm(7): + syntax error, unexpected newline +ERROR: syntax-error-after-syntax-error.asm(8): + syntax error, unexpected number +ERROR: syntax-error-after-syntax-error.asm(9): + 'mac' already defined at syntax-error-after-syntax-error.asm(1) +ERROR: syntax-error-after-syntax-error.asm(10): + 'mac' already defined at syntax-error-after-syntax-error.asm(1) +error: Assembly aborted (5 errors)! diff --git a/test/asm/syntax-error-after-syntax-error.out b/test/asm/syntax-error-after-syntax-error.out new file mode 100644 index 00000000..23732f2e --- /dev/null +++ b/test/asm/syntax-error-after-syntax-error.out @@ -0,0 +1,2 @@ +got 0 args +got 1 args diff --git a/test/asm/syntax-error-after-syntax-error.simple.err b/test/asm/syntax-error-after-syntax-error.simple.err new file mode 100644 index 00000000..82278668 --- /dev/null +++ b/test/asm/syntax-error-after-syntax-error.simple.err @@ -0,0 +1,11 @@ +ERROR: syntax-error-after-syntax-error.asm(6): + syntax error +ERROR: syntax-error-after-syntax-error.asm(7): + syntax error +ERROR: syntax-error-after-syntax-error.asm(8): + syntax error +ERROR: syntax-error-after-syntax-error.asm(9): + 'mac' already defined at syntax-error-after-syntax-error.asm(1) +ERROR: syntax-error-after-syntax-error.asm(10): + 'mac' already defined at syntax-error-after-syntax-error.asm(1) +error: Assembly aborted (5 errors)!