diff --git a/CONTRIBUTORS.rst b/CONTRIBUTORS.rst index f9efc062..5c399656 100644 --- a/CONTRIBUTORS.rst +++ b/CONTRIBUTORS.rst @@ -30,6 +30,8 @@ Other contributors - David Brotz +- Eldred Habert + - The Musl C library - obskyr diff --git a/src/asm/symbol.c b/src/asm/symbol.c index bf9d9942..50e9f180 100644 --- a/src/asm/symbol.c +++ b/src/asm/symbol.c @@ -553,6 +553,11 @@ void sym_AddSet(char *tzSym, int32_t value) tzSym, nsym->tzFileName, nsym->nFileLine); + else if (!(nsym->nType & SYMF_SET)) + yyerror("'%s' already defined as constant at %s(%u)", + tzSym, + nsym->tzFileName, + nsym->nFileLine); } else if (nsym->nType & SYMF_REF) { yyerror("'%s' already referenced at %s(%u)", tzSym, diff --git a/test/asm/symbol-override.asm b/test/asm/symbol-override.asm new file mode 100644 index 00000000..80d4f0f7 --- /dev/null +++ b/test/asm/symbol-override.asm @@ -0,0 +1,14 @@ +V set 0 +V set 1 + PRINTT "V={V}\n" + +W equ 1 +W set 0 + +rsset 1 +X rb 0 +X set 0 + +SECTION "Test", ROM0[1] +Y: +Y set 0 diff --git a/test/asm/symbol-override.out b/test/asm/symbol-override.out new file mode 100644 index 00000000..551d2819 --- /dev/null +++ b/test/asm/symbol-override.out @@ -0,0 +1,8 @@ +ERROR: symbol-override.asm(6): + 'W' already defined as constant at symbol-override.asm(5) +ERROR: symbol-override.asm(10): + 'X' already defined as constant at symbol-override.asm(9) +ERROR: symbol-override.asm(14): + 'Y' already defined as non-constant at symbol-override.asm(13) +error: Assembly aborted (3 errors)! +V=$1 diff --git a/test/asm/symbol-override.out.pipe b/test/asm/symbol-override.out.pipe new file mode 100644 index 00000000..3daa163b --- /dev/null +++ b/test/asm/symbol-override.out.pipe @@ -0,0 +1,8 @@ +ERROR: -(6): + 'W' already defined as constant at -(5) +ERROR: -(10): + 'X' already defined as constant at -(9) +ERROR: -(14): + 'Y' already defined as non-constant at -(13) +error: Assembly aborted (3 errors)! +V=$1