From a4a830776b3ae3b68b3bc9751e310dae5e23776a Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Wed, 6 Aug 2025 10:13:22 -0400 Subject: [PATCH] Deprecate treating strings as numbers (#1780) --- man/rgbasm-old.5 | 6 ++++++ src/asm/actions.cpp | 1 + test/asm/charlen-strchar.asm | 2 +- test/asm/db-dw-dl-string.asm | 6 +++--- test/asm/empty-strings.err | 2 ++ test/asm/equ-charmap.asm | 2 +- test/asm/multiple-charmaps.asm | 2 +- test/asm/multivalue-charmap.err | 4 ++++ test/asm/nested-bad-interpolation.err | 4 ++++ test/asm/raw-string-symbol-errors.err | 4 ++++ test/asm/raw-string-symbols.asm | 2 +- test/asm/state-file/a.asm | 2 +- test/asm/string-concat.asm | 2 +- test/asm/string-concat.err | 4 ++++ 14 files changed, 34 insertions(+), 9 deletions(-) diff --git a/man/rgbasm-old.5 b/man/rgbasm-old.5 index a64376a4..1240b9d6 100644 --- a/man/rgbasm-old.5 +++ b/man/rgbasm-old.5 @@ -135,6 +135,12 @@ Deprecated in 0.9.0, removed in 1.0.0. Instead, use a multi-value .Ic CHARMAP , or explicitly combine the values of individual characters. +.Ss Treating strings as numbers +Deprecated in 1.0.0. +.Pp +Instead, use character constants or the +.Ic CHARVAL +function. .Ss rgbgfx -f/--fix and -F/--fix-and-save Removed in 0.6.0. .Pp diff --git a/src/asm/actions.cpp b/src/asm/actions.cpp index 08bad262..5fd37a30 100644 --- a/src/asm/actions.cpp +++ b/src/asm/actions.cpp @@ -166,6 +166,7 @@ uint32_t act_CharToNum(std::string const &str) { } uint32_t act_StringToNum(std::string const &str) { + warning(WARNING_OBSOLETE, "Treating strings as numbers is deprecated"); if (std::vector units = charmap_Convert(str); units.size() == 1) { // The string is a single character with a single unit value, // which can be used directly as a number. diff --git a/test/asm/charlen-strchar.asm b/test/asm/charlen-strchar.asm index 9bc0ea3e..7bf17f53 100644 --- a/test/asm/charlen-strchar.asm +++ b/test/asm/charlen-strchar.asm @@ -1,4 +1,4 @@ - opt Wno-unmapped-char + opt Wno-unmapped-char, Wno-obsolete charmap "", $00 charmap "A", $10 charmap "B", $20 diff --git a/test/asm/db-dw-dl-string.asm b/test/asm/db-dw-dl-string.asm index 992d84df..5e52887f 100644 --- a/test/asm/db-dw-dl-string.asm +++ b/test/asm/db-dw-dl-string.asm @@ -8,6 +8,6 @@ SECTION "Test", ROM0 dw 0, "DEF", -1 dl 0, "DEF", -1 - db "A" + 1 - dw "A" + 1 - dl "A" + 1 + db 'A' + 1 + dw 'A' + 1 + dl 'A' + 1 diff --git a/test/asm/empty-strings.err b/test/asm/empty-strings.err index 35cf6c42..00941487 100644 --- a/test/asm/empty-strings.err +++ b/test/asm/empty-strings.err @@ -1,3 +1,5 @@ +warning: empty-strings.asm(5): [-Wobsolete] + Treating strings as numbers is deprecated error: empty-strings.asm(5): Strings as numbers must be a single charmap unit Assembly aborted with 1 error! diff --git a/test/asm/equ-charmap.asm b/test/asm/equ-charmap.asm index ccb37fd9..0e0c5ce1 100644 --- a/test/asm/equ-charmap.asm +++ b/test/asm/equ-charmap.asm @@ -1,4 +1,4 @@ charmap "A", 1 SECTION "sec", ROM0[0] -DEF _A_ EQU "A" +DEF _A_ EQU 'A' db _A_ diff --git a/test/asm/multiple-charmaps.asm b/test/asm/multiple-charmaps.asm index 07fb83a6..07b2dfa3 100644 --- a/test/asm/multiple-charmaps.asm +++ b/test/asm/multiple-charmaps.asm @@ -1,4 +1,4 @@ -opt Wno-unmapped-char +opt Wno-unmapped-char, Wno-obsolete MACRO new_ IF _NARG > 1 diff --git a/test/asm/multivalue-charmap.err b/test/asm/multivalue-charmap.err index 61393ca9..7346936e 100644 --- a/test/asm/multivalue-charmap.err +++ b/test/asm/multivalue-charmap.err @@ -1,5 +1,9 @@ warning: multivalue-charmap.asm(11): [-Wtruncation] All character units must be 8-bit +warning: multivalue-charmap.asm(20): [-Wobsolete] + Treating strings as numbers is deprecated +warning: multivalue-charmap.asm(21): [-Wobsolete] + Treating strings as numbers is deprecated warning: multivalue-charmap.asm(22): [-Wtruncation] All character units must be 8-bit warning: multivalue-charmap.asm(34): [-Wtruncation] diff --git a/test/asm/nested-bad-interpolation.err b/test/asm/nested-bad-interpolation.err index 4a4958c8..aafe2ec9 100644 --- a/test/asm/nested-bad-interpolation.err +++ b/test/asm/nested-bad-interpolation.err @@ -6,12 +6,16 @@ error: nested-bad-interpolation.asm(1): syntax error, unexpected end of line error: nested-bad-interpolation.asm(2): Interpolated symbol "b" is a reserved keyword; add a '#' prefix to use it as a raw symbol +warning: nested-bad-interpolation.asm(2): [-Wobsolete] + Treating strings as numbers is deprecated error: nested-bad-interpolation.asm(2): Strings as numbers must be a single charmap unit error: nested-bad-interpolation.asm(3): Interpolated symbol "c" is a reserved keyword; add a '#' prefix to use it as a raw symbol error: nested-bad-interpolation.asm(3): Interpolated symbol "" does not exist +warning: nested-bad-interpolation.asm(3): [-Wobsolete] + Treating strings as numbers is deprecated error: nested-bad-interpolation.asm(3): Strings as numbers must be a single charmap unit Assembly aborted with 8 errors! diff --git a/test/asm/raw-string-symbol-errors.err b/test/asm/raw-string-symbol-errors.err index 7474f537..b6826d95 100644 --- a/test/asm/raw-string-symbol-errors.err +++ b/test/asm/raw-string-symbol-errors.err @@ -1,3 +1,5 @@ +warning: raw-string-symbol-errors.asm(7): [-Wobsolete] + Treating strings as numbers is deprecated error: raw-string-symbol-errors.asm(7): Strings as numbers must be a single charmap unit error: raw-string-symbol-errors.asm(8): @@ -8,6 +10,8 @@ error: raw-string-symbol-errors.asm(13): 'm' is not a string symbol error: raw-string-symbol-errors.asm(14): 'u' is not a string symbol +warning: raw-string-symbol-errors.asm(17): [-Wobsolete] + Treating strings as numbers is deprecated error: raw-string-symbol-errors.asm(17): Strings as numbers must be a single charmap unit error: raw-string-symbol-errors.asm(18): diff --git a/test/asm/raw-string-symbols.asm b/test/asm/raw-string-symbols.asm index cba53b5d..928a716d 100644 --- a/test/asm/raw-string-symbols.asm +++ b/test/asm/raw-string-symbols.asm @@ -1,4 +1,4 @@ -opt Wno-unmapped-char +opt Wno-unmapped-char, Wno-obsolete def hello equs "world" def name equs "hello" diff --git a/test/asm/state-file/a.asm b/test/asm/state-file/a.asm index c9e77adf..c73290a0 100644 --- a/test/asm/state-file/a.asm +++ b/test/asm/state-file/a.asm @@ -21,6 +21,6 @@ MACRO mac2 ENDM newcharmap map2, main -charmap "\0\n\t\r", "\t", "\r", "\0", "\n" +charmap "\0\n\t\r", '\t', '\r', '\0', '\n' REDEF string EQUS "goodbye~" diff --git a/test/asm/string-concat.asm b/test/asm/string-concat.asm index 20e386cb..556233ae 100644 --- a/test/asm/string-concat.asm +++ b/test/asm/string-concat.asm @@ -19,7 +19,7 @@ charmap "a", 1 charmap "b", 2 charmap "ab", 12 assert "a" + "b" == 3 -assert "a" ++ "b" == 12 +assert charval("a" ++ "b") == 12 ; errors assert 2 ++ 2 == 4 diff --git a/test/asm/string-concat.err b/test/asm/string-concat.err index eab4a33b..c32556ac 100644 --- a/test/asm/string-concat.err +++ b/test/asm/string-concat.err @@ -1,3 +1,7 @@ +warning: string-concat.asm(21): [-Wobsolete] + Treating strings as numbers is deprecated +warning: string-concat.asm(21): [-Wobsolete] + Treating strings as numbers is deprecated error: string-concat.asm(25): syntax error, unexpected ++ error: string-concat.asm(26):