Suggest removing space before colon to define a label instead of invoking a macro

This commit is contained in:
Rangi42
2025-09-24 18:32:45 -04:00
parent ca4b890273
commit b0727e9779
3 changed files with 12 additions and 4 deletions

View File

@@ -417,6 +417,14 @@ void fstk_RunMacro(
macroName.c_str(),
defType
);
} else if (std::shared_ptr<std::string> firstArg = macroArgs->getArg(1);
firstArg && firstArg->starts_with(':')) {
error(
"Undefined macro `%s` (did you mean a label \"%s%s\"?)",
macroName.c_str(),
macroName.c_str(),
firstArg->starts_with("::") ? "::" : ":"
);
} else {
error("Undefined macro `%s`", macroName.c_str());
}

View File

@@ -23,6 +23,6 @@ Label2: ld d, 4
; and a label definition when already defined as a macro
mac: ld e, 5
; the space before the colon matters!
; the space before the colon matters! the space before the macro does not
undef :
undef :
undef ::

View File

@@ -4,8 +4,8 @@ error: `mac` already defined
at lexer-hack.asm(24)
and also:
at lexer-hack.asm(1)
error: Undefined macro `undef`
error: Undefined macro `undef` (did you mean a label "undef:"?)
at lexer-hack.asm(27)
error: Undefined macro `undef`
error: Undefined macro `undef` (did you mean a label "undef::"?)
at lexer-hack.asm(28)
Assembly aborted with 4 errors!