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)!