diff --git a/src/asm/main.cpp b/src/asm/main.cpp index 66713a1c..2be5ab74 100644 --- a/src/asm/main.cpp +++ b/src/asm/main.cpp @@ -385,13 +385,15 @@ int main(int argc, char *argv[]) { if (yy::parser parser; parser.parse() != 0 && nbErrors == 0) nbErrors = 1; - sect_CheckUnionClosed(); - sect_CheckLoadClosed(); - sect_CheckSizes(); + if (!failedOnMissingInclude) { + sect_CheckUnionClosed(); + sect_CheckLoadClosed(); + sect_CheckSizes(); - charmap_CheckStack(); - opt_CheckStack(); - sect_CheckStack(); + charmap_CheckStack(); + opt_CheckStack(); + sect_CheckStack(); + } if (nbErrors != 0) errx("Assembly aborted (%u error%s)!", nbErrors, nbErrors == 1 ? "" : "s"); diff --git a/test/asm/errors-after-missing-include.asm b/test/asm/errors-after-missing-include.asm new file mode 100644 index 00000000..fae85b9e --- /dev/null +++ b/test/asm/errors-after-missing-include.asm @@ -0,0 +1,10 @@ +PUSHC +PUSHO +PUSHS +SECTION "test", WRAM0 +UNION +INCLUDE "does not exist" +ENDU +POPS +POPO +POPC diff --git a/test/asm/errors-after-missing-include.flags b/test/asm/errors-after-missing-include.flags new file mode 100644 index 00000000..171d03a2 --- /dev/null +++ b/test/asm/errors-after-missing-include.flags @@ -0,0 +1 @@ +-Weverything -M /dev/null -MG