From 217c10ddac43fa0b87566bb44bef8236b0eab316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= Date: Mon, 12 Oct 2020 00:40:33 +0200 Subject: [PATCH] Report error when shifting outside a macro --- src/asm/macro.c | 4 +++- test/asm/shift-outside-macro.asm | 1 + test/asm/shift-outside-macro.err | 3 +++ test/asm/shift-outside-macro.out | 0 4 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 test/asm/shift-outside-macro.asm create mode 100644 test/asm/shift-outside-macro.err create mode 100644 test/asm/shift-outside-macro.out diff --git a/src/asm/macro.c b/src/asm/macro.c index 31037284..aa4903c4 100644 --- a/src/asm/macro.c +++ b/src/asm/macro.c @@ -130,7 +130,9 @@ uint32_t macro_UseNewUniqueID(void) void macro_ShiftCurrentArgs(void) { - if (macroArgs->shift != macroArgs->nbArgs) + if (!macroArgs) + error("Cannot shift macro arguments outside of a macro\n"); + else if (macroArgs->shift != macroArgs->nbArgs) macroArgs->shift++; } diff --git a/test/asm/shift-outside-macro.asm b/test/asm/shift-outside-macro.asm new file mode 100644 index 00000000..b46387d6 --- /dev/null +++ b/test/asm/shift-outside-macro.asm @@ -0,0 +1 @@ +shift diff --git a/test/asm/shift-outside-macro.err b/test/asm/shift-outside-macro.err new file mode 100644 index 00000000..5f050f3d --- /dev/null +++ b/test/asm/shift-outside-macro.err @@ -0,0 +1,3 @@ +ERROR: shift-outside-macro.asm(1): + Cannot shift macro arguments outside of a macro +error: Assembly aborted (1 errors)! diff --git a/test/asm/shift-outside-macro.out b/test/asm/shift-outside-macro.out new file mode 100644 index 00000000..e69de29b