shithub: rgbds

Download patch

ref: a3ee76ddddc474b82afb165d3fe625928f80e620
parent: b069278e98b19e367b78c8dc4f16ea48edfd6213
author: ISSOtm <[email protected]>
date: Thu Aug 29 15:27:03 EDT 2019

Allow periods to continue macro args
c75a953 broke my (previously-working) project that defined, via
macros, 'sizeof_.player'.
A test was added to confirm that those are indeed accepted
outside of macros.

--- a/src/asm/globlex.c
+++ b/src/asm/globlex.c
@@ -214,7 +214,8 @@
 		 || (ch >= '0' && ch <= '9')
 		 || ch == '_'
 		 || ch == '@'
-		 || ch == '#') {
+		 || ch == '#'
+		 || ch == '.') {
 			if (*destIndex >= MAXSYMLEN)
 				fatalerror("Symbol too long");
 
--- a/test/asm/label-macro-arg.asm
+++ b/test/asm/label-macro-arg.asm
@@ -1,3 +1,9 @@
+print: MACRO
+	printv \1
+	printt "\n"
+ENDM
+
+
 m1: MACRO
 x\1
 ENDM
@@ -14,14 +20,26 @@
 	m1 x = 7
 	m2 2 = 8
 
-	printv x
-	printt "\n"
+	print x
+	print y
+	print xx
+	print yy
 
-	printv y
-	printt "\n"
 
-	printv xx
-	printt "\n"
+test_char: MACRO
+VAR_DEF equs "sizeof_\1something = 0"
+VAR_DEF
+sizeof_\1something = 1
+	PURGE VAR_DEF
 
-	printv yy
-	printt "\n"
+VAR_PRINT equs "printt \"sizeof_\1something equals {sizeof_\1something}\\n\""
+	VAR_PRINT
+	PURGE VAR_PRINT
+ENDM
+
+	test_char _
+	test_char @
+	test_char #
+	test_char .
+
+	test_char :
--- a/test/asm/label-macro-arg.out
+++ b/test/asm/label-macro-arg.out
@@ -1,4 +1,10 @@
+ERROR: label-macro-arg.asm(45) -> test_char(2):
+    Macro 'something' not defined
 $5
 $6
 $7
 $8
+sizeof__something equals $1
+sizeof_@something equals $1
+sizeof_#something equals $1
+sizeof_.something equals $1
--- a/test/asm/label-macro-arg.out.pipe
+++ b/test/asm/label-macro-arg.out.pipe
@@ -1,4 +1,10 @@
+ERROR: -(45) -> test_char(2):
+    Macro 'something' not defined
 $5
 $6
 $7
 $8
+sizeof__something equals $1
+sizeof_@something equals $1
+sizeof_#something equals $1
+sizeof_.something equals $1