Implement -Wnumeric-string[=0|1|2] (#935)

Fixes #934
This commit is contained in:
Rangi
2021-11-12 17:09:35 -05:00
committed by GitHub
parent 55a02981b5
commit 0bb815edc0
14 changed files with 135 additions and 23 deletions

View File

@@ -12,6 +12,6 @@ SECTION "Test", ROM0
dw "A" + 1
dl "A" + 1
db 1, ("UVWXYZ") & $ff, -1
dw 1, ("UVWXYZ") & $ffff, -1
dl 1, ("UVWXYZ"), -1
db 1, ("WXYZ") & $ff, -1
dw 1, ("WXYZ") & $ffff, -1
dl 1, ("WXYZ"), -1

View File

@@ -0,0 +1,6 @@
warning: db-dw-dl-string.asm(15): [-Wnumeric-string]
Treating 4-character string as a number
warning: db-dw-dl-string.asm(16): [-Wnumeric-string]
Treating 4-character string as a number
warning: db-dw-dl-string.asm(17): [-Wnumeric-string]
Treating 4-character string as a number

View File

@@ -1,3 +1,5 @@
ERROR: if@-no-sect.asm(1):
PC has no value outside a section
warning: if@-no-sect.asm(1): [-Wnumeric-string]
Treating 2-character string as a number
error: Assembly aborted (1 error)!

View File

@@ -1,3 +1,15 @@
warning: multiple-charmaps.asm(39) -> multiple-charmaps.asm::print_mapped(27): [-Wnumeric-string]
Treating 2-character string as a number
warning: multiple-charmaps.asm(47) -> multiple-charmaps.asm::print_mapped(27): [-Wnumeric-string]
Treating 2-character string as a number
warning: multiple-charmaps.asm(66) -> multiple-charmaps.asm::print_mapped(27): [-Wnumeric-string]
Treating 2-character string as a number
warning: multiple-charmaps.asm(89) -> multiple-charmaps.asm::print_mapped(27): [-Wnumeric-string]
Treating 2-character string as a number
warning: multiple-charmaps.asm(90) -> multiple-charmaps.asm::print_mapped(27): [-Wnumeric-string]
Treating 2-character string as a number
warning: multiple-charmaps.asm(98) -> multiple-charmaps.asm::print_mapped(27): [-Wnumeric-string]
Treating 2-character string as a number
ERROR: multiple-charmaps.asm(100) -> multiple-charmaps.asm::new_(7):
Charmap 'map1' already exists
ERROR: multiple-charmaps.asm(102) -> multiple-charmaps.asm::set_(13):

View File

@@ -0,0 +1,25 @@
charmap "<NULL>", $00
SECTION "ROM", ROM0
MACRO try
OPT \1
; no warning
db "A" * 2
db ("<NULL>")
; warn at level 1
dl ("AB<NULL>CD")
dl "<NULL" + ">NULL>"
; warn at level 2
dl (STRCAT("A", "B"))
dl "A<NULL>Z" + 1
ENDM
try Wno-numeric-string
try Wnumeric-string
try Wnumeric-string=0
try Wnumeric-string=1
try Wnumeric-string=2
try Werror=numeric-string=1
try Werror=numeric-string=2

View File

@@ -0,0 +1,38 @@
warning: warn-numeric-string.asm(20) -> warn-numeric-string.asm::try(12): [-Wnumeric-string]
Treating string as a number ignores first 1 character
warning: warn-numeric-string.asm(20) -> warn-numeric-string.asm::try(13): [-Wnumeric-string]
Treating string as a number ignores first 1 character
warning: warn-numeric-string.asm(20) -> warn-numeric-string.asm::try(13): [-Wnumeric-string]
Treating string as a number ignores first 2 characters
warning: warn-numeric-string.asm(22) -> warn-numeric-string.asm::try(12): [-Wnumeric-string]
Treating string as a number ignores first 1 character
warning: warn-numeric-string.asm(22) -> warn-numeric-string.asm::try(13): [-Wnumeric-string]
Treating string as a number ignores first 1 character
warning: warn-numeric-string.asm(22) -> warn-numeric-string.asm::try(13): [-Wnumeric-string]
Treating string as a number ignores first 2 characters
warning: warn-numeric-string.asm(23) -> warn-numeric-string.asm::try(12): [-Wnumeric-string]
Treating string as a number ignores first 1 character
warning: warn-numeric-string.asm(23) -> warn-numeric-string.asm::try(13): [-Wnumeric-string]
Treating string as a number ignores first 1 character
warning: warn-numeric-string.asm(23) -> warn-numeric-string.asm::try(13): [-Wnumeric-string]
Treating string as a number ignores first 2 characters
warning: warn-numeric-string.asm(23) -> warn-numeric-string.asm::try(15): [-Wnumeric-string]
Treating 2-character string as a number
warning: warn-numeric-string.asm(23) -> warn-numeric-string.asm::try(16): [-Wnumeric-string]
Treating 3-character string as a number
ERROR: warn-numeric-string.asm(24) -> warn-numeric-string.asm::try(12): [-Werror=numeric-string]
Treating string as a number ignores first 1 character
ERROR: warn-numeric-string.asm(24) -> warn-numeric-string.asm::try(13): [-Werror=numeric-string]
Treating string as a number ignores first 1 character
ERROR: warn-numeric-string.asm(24) -> warn-numeric-string.asm::try(13): [-Werror=numeric-string]
Treating string as a number ignores first 2 characters
ERROR: warn-numeric-string.asm(25) -> warn-numeric-string.asm::try(12): [-Werror=numeric-string]
Treating string as a number ignores first 1 character
ERROR: warn-numeric-string.asm(25) -> warn-numeric-string.asm::try(13): [-Werror=numeric-string]
Treating string as a number ignores first 1 character
ERROR: warn-numeric-string.asm(25) -> warn-numeric-string.asm::try(13): [-Werror=numeric-string]
Treating string as a number ignores first 2 characters
ERROR: warn-numeric-string.asm(25) -> warn-numeric-string.asm::try(15): [-Werror=numeric-string]
Treating 2-character string as a number
ERROR: warn-numeric-string.asm(25) -> warn-numeric-string.asm::try(16): [-Werror=numeric-string]
Treating 3-character string as a number

View File