Improve error message for negative shift arguments

This commit is contained in:
Jakub Kądziołka
2020-10-12 22:54:38 +02:00
committed by ISSOtm
parent 045a9e8b93
commit 4e1d79081c
5 changed files with 12 additions and 3 deletions

View File

@@ -130,9 +130,11 @@ uint32_t macro_UseNewUniqueID(void)
void macro_ShiftCurrentArgs(int32_t count)
{
if (!macroArgs)
if (!macroArgs) {
error("Cannot shift macro arguments outside of a macro\n");
else if (macroArgs->shift < macroArgs->nbArgs) {
} else if (count < 0) {
error("Cannot shift arguments by negative amount %" PRId32 "\n", count);
} else if (macroArgs->shift < macroArgs->nbArgs) {
macroArgs->shift += count;
if (macroArgs->shift > macroArgs->nbArgs)
macroArgs->shift = macroArgs->nbArgs;

View File

@@ -580,7 +580,7 @@ assert : T_POP_ASSERT assert_type relocexpr
;
shift : T_POP_SHIFT { macro_ShiftCurrentArgs(1); }
| T_POP_SHIFT uconst { macro_ShiftCurrentArgs($2); }
| T_POP_SHIFT const { macro_ShiftCurrentArgs($2); }
;
load : T_POP_LOAD string ',' sectiontype sectorg sectattrs {

View File

@@ -0,0 +1,4 @@
m: MACRO
shift -3
ENDM
m

View File

@@ -0,0 +1,3 @@
ERROR: shift-negative.asm(4) -> shift-negative.asm::m(2):
Cannot shift arguments by negative amount -3
error: Assembly aborted (1 errors)!

View File