diff --git a/test/asm/expansion-after-end.asm b/test/asm/expansion-after-end.asm new file mode 100644 index 00000000..29acbe4f --- /dev/null +++ b/test/asm/expansion-after-end.asm @@ -0,0 +1,25 @@ +DEF x = 0 +DEF s EQUS "\nprintln \"lol\", x\ndef x += 1" + +if 0 + println "no" +endc{#s} + +if 1 + println "yes" +else{#s} + println "nope" +endc{#s} + +rept 0 + println "no way" +endr{#s} + +println "x = ", x + +MACRO m + if 0 + println "no how" + endc\1 +ENDM +m \nprintln "haha" diff --git a/test/asm/expansion-after-end.err b/test/asm/expansion-after-end.err new file mode 100644 index 00000000..b2f1ebc5 --- /dev/null +++ b/test/asm/expansion-after-end.err @@ -0,0 +1,24 @@ +error: Invalid character '{' + at expansion-after-end.asm(6) +error: syntax error, unexpected symbol, expecting end of line or end of buffer or end of fragment literal + at expansion-after-end.asm(6) +error: Invalid character '}' + at expansion-after-end.asm(6) +error: Invalid character '{' + at expansion-after-end.asm(12) +error: syntax error, unexpected symbol, expecting end of line or end of buffer or end of fragment literal + at expansion-after-end.asm(12) +error: Invalid character '}' + at expansion-after-end.asm(12) +error: Invalid character '{' + at expansion-after-end.asm(16) +error: syntax error, unexpected symbol, expecting end of line or end of buffer or end of fragment literal + at expansion-after-end.asm(16) +error: Invalid character '}' + at expansion-after-end.asm(16) +error: Invalid character '1' after line continuation + at expansion-after-end.asm::m(23) <- expansion-after-end.asm(25) +error: syntax error, unexpected number, expecting end of line or end of buffer or end of fragment literal + at expansion-after-end.asm::m(23) <- expansion-after-end.asm(25) +FATAL: Ended block with 1 unterminated conditional (`IF`/`ELIF`/`ELSE` block) + at expansion-after-end.asm::m(24) <- expansion-after-end.asm(25) diff --git a/test/asm/expansion-after-end.out b/test/asm/expansion-after-end.out new file mode 100644 index 00000000..ff8e2029 --- /dev/null +++ b/test/asm/expansion-after-end.out @@ -0,0 +1,2 @@ +yes +x = $0 diff --git a/test/asm/interpolate-else.asm b/test/asm/interpolate-else.asm new file mode 100644 index 00000000..4bd15da4 --- /dev/null +++ b/test/asm/interpolate-else.asm @@ -0,0 +1,13 @@ +def hmm equs "else" + +if 1 + println "yes" +{hmm} + println "no" +endc + +if 0 + println "NO" +{hmm} + println "YES" +endc diff --git a/test/asm/interpolate-else.out b/test/asm/interpolate-else.out new file mode 100644 index 00000000..7cfab5b0 --- /dev/null +++ b/test/asm/interpolate-else.out @@ -0,0 +1 @@ +yes diff --git a/test/asm/leading-keywords.asm b/test/asm/leading-keywords.asm new file mode 100644 index 00000000..24b970da --- /dev/null +++ b/test/asm/leading-keywords.asm @@ -0,0 +1,20 @@ +; This covers some edge cases of `skipToLeadingKeyword` + +SECTION "test", ROM0 + +MACRO mac + if 1 + DEF x = \1_WIDTH + DEF y = \1_HEIGHT + elif 0 + DEF x = \1_HEIGHT + DEF y = \1_WIDTH + else + fail "nope" + endc + db \1_WIDTH, \1_HEIGHT, x, y +ENDM + + DEF NAME_WIDTH EQU 10 + DEF NAME_HEIGHT EQU 9 + mac NAME diff --git a/test/asm/leading-keywords.out.bin b/test/asm/leading-keywords.out.bin new file mode 100644 index 00000000..b60c931f --- /dev/null +++ b/test/asm/leading-keywords.out.bin @@ -0,0 +1,3 @@ + + + \ No newline at end of file