mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Merge pull request #605 from NieDzejkob/invalid-labels
Don't consider difference of invalid labels constant
This commit is contained in:
@@ -125,7 +125,6 @@ struct Symbol *sym_FindSymbol(char const *symName);
|
||||
struct Symbol *sym_AddMacro(char const *symName, int32_t defLineNo, char *body, size_t size);
|
||||
struct Symbol *sym_Ref(char const *symName);
|
||||
struct Symbol *sym_AddString(char const *symName, char const *value);
|
||||
uint32_t sym_GetDefinedValue(char const *s);
|
||||
void sym_Purge(char const *symName);
|
||||
void sym_Init(void);
|
||||
|
||||
|
||||
@@ -309,7 +309,9 @@ bool rpn_IsDiffConstant(struct Expression const *src, struct Symbol const *sym)
|
||||
if (!sym1 || !sym || sym1->type != SYM_LABEL || sym->type != SYM_LABEL)
|
||||
return false;
|
||||
|
||||
return sym_GetSection(sym1) == sym_GetSection(sym);
|
||||
struct Section const *section1 = sym_GetSection(sym1);
|
||||
struct Section const *section2 = sym_GetSection(sym);
|
||||
return section1 && (section1 == section2);
|
||||
}
|
||||
|
||||
static bool isDiffConstant(struct Expression const *src1,
|
||||
|
||||
@@ -322,23 +322,6 @@ uint32_t sym_GetConstantValue(char const *s)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return a defined symbols value... aborts if not defined yet
|
||||
*/
|
||||
uint32_t sym_GetDefinedValue(char const *s)
|
||||
{
|
||||
struct Symbol const *sym = sym_FindSymbol(s);
|
||||
|
||||
if (sym == NULL || !sym_IsDefined(sym))
|
||||
error("'%s' not defined\n", s);
|
||||
else if (!sym_IsNumeric(sym))
|
||||
error("'%s' is a macro or string symbol\n", s);
|
||||
else
|
||||
return sym_GetValue(sym);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char const *sym_GetCurrentSymbolScope(void)
|
||||
{
|
||||
return labelScope;
|
||||
|
||||
3
test/asm/use-label-outside-section.asm
Normal file
3
test/asm/use-label-outside-section.asm
Normal file
@@ -0,0 +1,3 @@
|
||||
lab:
|
||||
PRINTV lab-lab
|
||||
PRINTT "\n"
|
||||
5
test/asm/use-label-outside-section.err
Normal file
5
test/asm/use-label-outside-section.err
Normal file
@@ -0,0 +1,5 @@
|
||||
ERROR: use-label-outside-section.asm(1):
|
||||
Label "lab" created outside of a SECTION
|
||||
ERROR: use-label-outside-section.asm(2):
|
||||
Expected constant expression: 'lab' is not constant at assembly time
|
||||
error: Assembly aborted (2 errors)!
|
||||
1
test/asm/use-label-outside-section.out
Normal file
1
test/asm/use-label-outside-section.out
Normal file
@@ -0,0 +1 @@
|
||||
$0
|
||||
Reference in New Issue
Block a user