Syntax error message hints to indent macro invocations

This message is only printed for identifiers parsed as
`T_LABEL` (since they're at the start of a line) but
already defined as macros. Otherwise it may not be
relevant, e.g. for `MyLabel;:` or `My Label::`.
This commit is contained in:
Rangi
2021-05-21 17:09:23 -04:00
committed by Eldred Habert
parent 872af9c7ed
commit 0068c1375c
3 changed files with 13 additions and 0 deletions

View File

@@ -688,6 +688,15 @@ line : plain_directive endofline
fstk_StopRept();
yyerrok;
}
| T_LABEL error endofline { /* Hint about unindented macros parsed as labels */
struct Symbol *macro = sym_FindExactSymbol($1);
if (macro && macro->type == SYM_MACRO)
fprintf(stderr,
" To invoke `%s` as a macro it must be indented\n", $1);
fstk_StopRept();
yyerrok;
}
;
/*

View File

@@ -2,8 +2,10 @@ ERROR: syntax-error-after-syntax-error.asm(6):
syntax error, unexpected newline
ERROR: syntax-error-after-syntax-error.asm(7):
syntax error, unexpected newline
To invoke `mac` as a macro it must be indented
ERROR: syntax-error-after-syntax-error.asm(8):
syntax error, unexpected number
To invoke `mac` as a macro it must be indented
ERROR: syntax-error-after-syntax-error.asm(9):
'mac' already defined at syntax-error-after-syntax-error.asm(1)
ERROR: syntax-error-after-syntax-error.asm(10):

View File

@@ -2,8 +2,10 @@ ERROR: syntax-error-after-syntax-error.asm(6):
syntax error
ERROR: syntax-error-after-syntax-error.asm(7):
syntax error
To invoke `mac` as a macro it must be indented
ERROR: syntax-error-after-syntax-error.asm(8):
syntax error
To invoke `mac` as a macro it must be indented
ERROR: syntax-error-after-syntax-error.asm(9):
'mac' already defined at syntax-error-after-syntax-error.asm(1)
ERROR: syntax-error-after-syntax-error.asm(10):