mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Merge pull request #602 from NieDzejkob/shiftstorm
Report only one error when invalid shift has argument
This commit is contained in:
@@ -29,7 +29,7 @@ uint32_t macro_GetUniqueID(void);
|
||||
char const *macro_GetUniqueIDStr(void);
|
||||
void macro_SetUniqueID(uint32_t id);
|
||||
uint32_t macro_UseNewUniqueID(void);
|
||||
void macro_ShiftCurrentArgs(void);
|
||||
void macro_ShiftCurrentArgs(int32_t count);
|
||||
uint32_t macro_NbArgs(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -128,12 +128,17 @@ uint32_t macro_UseNewUniqueID(void)
|
||||
return maxUniqueID;
|
||||
}
|
||||
|
||||
void macro_ShiftCurrentArgs(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)
|
||||
macroArgs->shift++;
|
||||
} 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;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t macro_NbArgs(void)
|
||||
|
||||
@@ -579,13 +579,8 @@ assert : T_POP_ASSERT assert_type relocexpr
|
||||
}
|
||||
;
|
||||
|
||||
shift : T_POP_SHIFT { macro_ShiftCurrentArgs(); }
|
||||
| T_POP_SHIFT uconst
|
||||
{
|
||||
int32_t i = $2;
|
||||
while (i--)
|
||||
macro_ShiftCurrentArgs();
|
||||
}
|
||||
shift : T_POP_SHIFT { macro_ShiftCurrentArgs(1); }
|
||||
| T_POP_SHIFT const { macro_ShiftCurrentArgs($2); }
|
||||
;
|
||||
|
||||
load : T_POP_LOAD string ',' sectiontype sectorg sectattrs {
|
||||
|
||||
4
test/asm/shift-negative.asm
Normal file
4
test/asm/shift-negative.asm
Normal file
@@ -0,0 +1,4 @@
|
||||
m: MACRO
|
||||
shift -3
|
||||
ENDM
|
||||
m
|
||||
3
test/asm/shift-negative.err
Normal file
3
test/asm/shift-negative.err
Normal 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)!
|
||||
0
test/asm/shift-negative.out
Normal file
0
test/asm/shift-negative.out
Normal file
@@ -1 +1,2 @@
|
||||
shift
|
||||
shift 3
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
ERROR: shift-outside-macro.asm(1):
|
||||
Cannot shift macro arguments outside of a macro
|
||||
error: Assembly aborted (1 errors)!
|
||||
ERROR: shift-outside-macro.asm(2):
|
||||
Cannot shift macro arguments outside of a macro
|
||||
error: Assembly aborted (2 errors)!
|
||||
|
||||
Reference in New Issue
Block a user