diff --git a/src/asm/rpn.cpp b/src/asm/rpn.cpp index 1ccf4e4a..28997df9 100644 --- a/src/asm/rpn.cpp +++ b/src/asm/rpn.cpp @@ -87,9 +87,10 @@ void Expression::makeSymbol(std::string const &symName) { isSymbol = true; data = sym_IsPC(sym) ? "PC is not constant at assembly time" - : sym_IsPurgedScoped(symName) - ? "`"s + symName + "` is not constant at assembly time; it was purged" - : "`"s + symName + "` is not constant at assembly time"; + : (sym && sym->isDefined() + ? "`"s + symName + "` is not constant at assembly time" + : "undefined symbol `"s + symName + "`") + + (sym_IsPurgedScoped(symName) ? "; it was purged" : ""); sym = sym_Ref(symName); size_t nameLen = sym->name.length() + 1; // Don't forget NUL! diff --git a/test/asm/compound-assignment.err b/test/asm/compound-assignment.err index b89891af..a76526a4 100644 --- a/test/asm/compound-assignment.err +++ b/test/asm/compound-assignment.err @@ -1,3 +1,3 @@ -error: Expected constant expression: `UnDeFiNeD` is not constant at assembly time +error: Expected constant expression: undefined symbol `UnDeFiNeD` at compound-assignment.asm(35) Assembly aborted with 1 error! diff --git a/test/asm/ds-bad.err b/test/asm/ds-bad.err index c51d7e6b..46f2f0cc 100644 --- a/test/asm/ds-bad.err +++ b/test/asm/ds-bad.err @@ -1,4 +1,4 @@ -error: Expected constant expression: `unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `unknown` at ds-bad.asm(3) warning: Expression must be 8-bit; use `LOW()` to force 8-bit [-Wtruncation] at ds-bad.asm(4) diff --git a/test/asm/ff00+c-bad.err b/test/asm/ff00+c-bad.err index acfe1edc..afa2424d 100644 --- a/test/asm/ff00+c-bad.err +++ b/test/asm/ff00+c-bad.err @@ -1,6 +1,6 @@ error: Base value must be equal to $FF00 for [$FF00+C] at ff00+c-bad.asm(8) -error: Expected constant expression: `xyz` is not constant at assembly time +error: Expected constant expression: undefined symbol `xyz` at ff00+c-bad.asm(9) error: Base value must be equal to $FF00 for [$FF00+C] at ff00+c-bad.asm(9) diff --git a/test/asm/isconst.err b/test/asm/isconst.err index 951f6dc9..241bdd8f 100644 --- a/test/asm/isconst.err +++ b/test/asm/isconst.err @@ -1,6 +1,6 @@ warning: Test #1: Compile-time constant [-Wuser] at isconst.asm::test_expr(10) <- isconst.asm(14) -error: Expected constant expression: `UnknownLabel` is not constant at assembly time +error: Expected constant expression: undefined symbol `UnknownLabel` at isconst.asm::test_expr(9) <- isconst.asm(15) warning: Test #3: Compile-time constant [-Wuser] at isconst.asm::test_expr(10) <- isconst.asm(21) diff --git a/test/asm/label-diff.err b/test/asm/label-diff.err index d37a5159..4c19e4e4 100644 --- a/test/asm/label-diff.err +++ b/test/asm/label-diff.err @@ -2,25 +2,25 @@ error: Expected constant expression: `Known` is not constant at assembly time at label-diff.asm::print_diff(19) <- label-diff.asm(28) error: Expected constant expression: `Known` is not constant at assembly time at label-diff.asm::print_diff(20) <- label-diff.asm(28) -error: Expected constant expression: `Unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown` at label-diff.asm::print_diff(19) <- label-diff.asm(30) -error: Expected constant expression: `Unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown` at label-diff.asm::print_diff(20) <- label-diff.asm(30) error: Expected constant expression: `Known` is not constant at assembly time at label-diff.asm::print_diff(19) <- label-diff.asm(32) -error: Expected constant expression: `Unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown` at label-diff.asm::print_diff(20) <- label-diff.asm(32) -error: Expected constant expression: `Unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown` at label-diff.asm::print_diff(19) <- label-diff.asm(34) -error: Expected constant expression: `Unknown2` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown2` at label-diff.asm::print_diff(20) <- label-diff.asm(34) error: Expected constant expression: `Known` is not constant at assembly time at label-diff.asm::print_diff(19) <- label-diff.asm(41) error: Expected constant expression: `Known` is not constant at assembly time at label-diff.asm::print_diff(20) <- label-diff.asm(41) -error: Expected constant expression: `Unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown` at label-diff.asm::print_diff(19) <- label-diff.asm(43) -error: Expected constant expression: `Unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown` at label-diff.asm::print_diff(20) <- label-diff.asm(43) error: Expected constant expression: PC is not constant at assembly time at label-diff.asm::print_diff(19) <- label-diff.asm(54) @@ -30,7 +30,7 @@ error: Expected constant expression: `Known` is not constant at assembly time at label-diff.asm::print_diff(19) <- label-diff.asm(56) error: Expected constant expression: PC is not constant at assembly time at label-diff.asm::print_diff(20) <- label-diff.asm(56) -error: Expected constant expression: `Unknown` is not constant at assembly time +error: Expected constant expression: undefined symbol `Unknown` at label-diff.asm::print_diff(19) <- label-diff.asm(58) error: Expected constant expression: PC is not constant at assembly time at label-diff.asm::print_diff(20) <- label-diff.asm(58) diff --git a/test/asm/raw-string-symbol-errors.err b/test/asm/raw-string-symbol-errors.err index 7d0c1aa8..ba5783af 100644 --- a/test/asm/raw-string-symbol-errors.err +++ b/test/asm/raw-string-symbol-errors.err @@ -16,7 +16,7 @@ error: Strings as numbers must be a single charmap unit at raw-string-symbol-errors.asm(17) error: `m` is not a numeric symbol at raw-string-symbol-errors.asm(18) -error: Expected constant expression: `u` is not constant at assembly time +error: Expected constant expression: undefined symbol `u` at raw-string-symbol-errors.asm(19) error: `n` is not a string symbol at raw-string-symbol-errors.asm(21) diff --git a/test/asm/use-purged-symbol.err b/test/asm/use-purged-symbol.err index 5072e95c..cf09d222 100644 --- a/test/asm/use-purged-symbol.err +++ b/test/asm/use-purged-symbol.err @@ -2,13 +2,13 @@ error: Undefined macro `m`; it was purged at use-purged-symbol.asm(6) error: Bracketed symbol `argi` does not exist; it was purged at use-purged-symbol.asm::m2(10) <- use-purged-symbol.asm(13) -error: Expected constant expression: `argi` is not constant at assembly time; it was purged +error: Expected constant expression: undefined symbol `argi`; it was purged at use-purged-symbol.asm(15) error: Interpolated symbol `argi` does not exist; it was purged at use-purged-symbol.asm(17) warning: Purging an exported symbol `Label` [-Wpurge] at use-purged-symbol.asm(20) -error: Expected constant expression: `Label` is not constant at assembly time; it was purged +error: Expected constant expression: undefined symbol `Label`; it was purged at use-purged-symbol.asm(21) error: Expected constant expression: `Label`'s bank is not known; it was purged at use-purged-symbol.asm(22)