mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
Require underscores to actually be digit separators (#1812)
Multiple, trailing, or next to decimal point are errors
This commit is contained in:
@@ -9,11 +9,11 @@ ENDM
|
||||
printargs A, B, C, D
|
||||
|
||||
MACRO mac
|
||||
println \<2__> + \<1_2> + \<\1>
|
||||
println \<2> + \<1_2> + \<\1>
|
||||
def x = 2
|
||||
println \<{d:x}> + \<1_{d:x}> + \<\<\<13>>>
|
||||
def y equs "NARG"
|
||||
println \<x> + \<1_{d:x}_> + \<\<\<_{y}>>>
|
||||
println \<x> + \<1_{d:x}> + \<\<\<_{y}>>>
|
||||
ENDM
|
||||
|
||||
mac 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 1
|
||||
|
||||
@@ -2,11 +2,11 @@ error: Invalid integer constant, no digits after '$'
|
||||
at invalid-numbers.asm::try(2) <- invalid-numbers.asm(11)
|
||||
error: Invalid graphics constant, no digits after '`'
|
||||
at invalid-numbers.asm::try(2) <- invalid-numbers.asm(12)
|
||||
error: Invalid integer constant, no digits after '%'
|
||||
error: Invalid integer constant, no digits after "0b"
|
||||
at invalid-numbers.asm::try(2) <- invalid-numbers.asm(13)
|
||||
error: Invalid integer constant, no digits after '&'
|
||||
error: Invalid integer constant, no digits after "0o"
|
||||
at invalid-numbers.asm::try(2) <- invalid-numbers.asm(14)
|
||||
error: Invalid integer constant, no digits after '$'
|
||||
error: Invalid integer constant, no digits after "0x"
|
||||
at invalid-numbers.asm::try(2) <- invalid-numbers.asm(15)
|
||||
warning: Integer constant is too large [-Wlarge-constant]
|
||||
at invalid-numbers.asm::try(2) <- invalid-numbers.asm(18)
|
||||
|
||||
31
test/asm/invalid-underscore.asm
Normal file
31
test/asm/invalid-underscore.asm
Normal file
@@ -0,0 +1,31 @@
|
||||
; good
|
||||
println 123_456
|
||||
println %_1010_1010
|
||||
println 0b_1010_1010
|
||||
println &_555_555
|
||||
println 0o_777_777
|
||||
println $_dead_beef
|
||||
println 0x_cafe_babe
|
||||
println `_0101_2323
|
||||
println 12_34.56_78
|
||||
println 12_34.56_q8
|
||||
|
||||
; bad (multiple '_')
|
||||
println 123__456
|
||||
println %1010__1010
|
||||
println &123__456
|
||||
println $abc__def
|
||||
println `0101__2323
|
||||
println 3.14__15
|
||||
println 2.718__Q16
|
||||
|
||||
; bad (trailing '_')
|
||||
println 12345_
|
||||
println 0b101010_
|
||||
println 0o123456_
|
||||
println 0xabcdef_
|
||||
println `01230123_
|
||||
|
||||
; bad ('_' next to '.')
|
||||
println 1_.618
|
||||
println 2._718
|
||||
29
test/asm/invalid-underscore.err
Normal file
29
test/asm/invalid-underscore.err
Normal file
@@ -0,0 +1,29 @@
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(14)
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(15)
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(16)
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(17)
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(18)
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(19)
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(20)
|
||||
error: Invalid integer constant, trailing '_'
|
||||
at invalid-underscore.asm(23)
|
||||
error: Invalid integer constant, trailing '_'
|
||||
at invalid-underscore.asm(24)
|
||||
error: Invalid integer constant, trailing '_'
|
||||
at invalid-underscore.asm(25)
|
||||
error: Invalid integer constant, trailing '_'
|
||||
at invalid-underscore.asm(26)
|
||||
error: Invalid graphics constant, trailing '_'
|
||||
at invalid-underscore.asm(27)
|
||||
error: Invalid integer constant, trailing '_'
|
||||
at invalid-underscore.asm(30)
|
||||
error: Invalid integer constant, '_' after another '_'
|
||||
at invalid-underscore.asm(31)
|
||||
Assembly aborted with 14 errors!
|
||||
24
test/asm/invalid-underscore.out
Normal file
24
test/asm/invalid-underscore.out
Normal file
@@ -0,0 +1,24 @@
|
||||
$1E240
|
||||
$AA
|
||||
$AA
|
||||
$2DB6D
|
||||
$3FFFF
|
||||
$DEADBEEF
|
||||
$CAFEBABE
|
||||
$F55
|
||||
$4D2915B
|
||||
$4D28F
|
||||
$1E240
|
||||
$AA
|
||||
$A72E
|
||||
$ABCDEF
|
||||
$F55
|
||||
$32439
|
||||
$2B7CF
|
||||
$3039
|
||||
$2A
|
||||
$A72E
|
||||
$ABCDEF
|
||||
$3355
|
||||
$19E35
|
||||
$2B7CF
|
||||
@@ -14,15 +14,15 @@ _1234::
|
||||
|
||||
; with underscores
|
||||
dw _1234 ; label
|
||||
db 123, 1_23, 1__23 ; decimal
|
||||
db 123, 1_23, 12_3 ; decimal
|
||||
dw 12_345 ; decimal
|
||||
dw $ab_cd ; hex
|
||||
db &2_0_0_ ; octal
|
||||
db &2_0_0 ; octal
|
||||
db %1111_0000, %1_0 ; binary
|
||||
dl 6_._283_185 ; fixed point
|
||||
dw `0123_3210, `00_33_22_11_ ; gfx
|
||||
dl 6.283_185 ; fixed point
|
||||
dw `0123_3210, `_00_33_22_11 ; gfx
|
||||
|
||||
; underscores with custom digits
|
||||
opt g.ABC, b.X
|
||||
db %.X.X_..XX_
|
||||
dw `.A.B_.C.._
|
||||
db %.X.X_..XX
|
||||
dw `.A.B_.C..
|
||||
|
||||
Reference in New Issue
Block a user