Skip to content

Commit 9fd0c02

Browse files
committed
Fix invalid character in bracketed macro argument
The invalid character should not be consumed by `shiftChar()`.
1 parent c1c7e64 commit 9fd0c02

7 files changed

Lines changed: 20 additions & 6 deletions

src/asm/lexer.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -582,11 +582,13 @@ static uint32_t readBracketedMacroArgNum() {
582582
empty = true;
583583
}
584584

585-
c = bumpChar();
585+
c = peek();
586586
if (c != '>') {
587587
error("Invalid character %s in bracketed macro argument", printChar(c));
588588
return 0;
589-
} else if (empty) {
589+
}
590+
shiftChar();
591+
if (empty) {
590592
error("Empty bracketed macro argument");
591593
return 0;
592594
} else if (num == 0 && !symbolError) {

test/asm/character-escapes.out

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
(
44
)
55
illegal character escape z?
6-
invalid character n>?
7-
invalid character >?
6+
invalid character
7+
>?
8+
invalid character >?

test/asm/empty-raw-identifier.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
all args: a,#b,c,1,#2,3
2-
bad args: >, >
2+
bad args: ?>, >
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
MACRO m
2+
println "¿", """\<_NARG""", "?"
3+
println """done!"""
4+
ENDM
5+
6+
m one, two, three
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
error: Invalid character '"' in bracketed macro argument
2+
at invalid-bracketed-macro-arg.asm::m(2) <- invalid-bracketed-macro-arg.asm(6)
3+
Assembly aborted with 1 error
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
¿?
2+
done!
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: Invalid character '!' in bracketed macro argument
22
at invalid-macro-arg-character.asm(1)
3-
error: syntax error, unexpected >
3+
error: syntax error, unexpected !
44
at invalid-macro-arg-character.asm(1)
55
Assembly aborted with 2 errors

0 commit comments

Comments
 (0)