From bb18eef81fab79c28347f7a9c35fc00865be4b45 Mon Sep 17 00:00:00 2001 From: C3pa <41503714+C3pa@users.noreply.github.com> Date: Sat, 18 Mar 2023 19:30:00 +0100 Subject: [PATCH 1/5] Make functions in string api accept numbers All of these functions effectively call `tostring()`, when the passed parameter is a number. I think there is no need to raise warnings if users pass numbers instead of strings to these functions. --- meta/template/string.lua | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/meta/template/string.lua b/meta/template/string.lua index cf83104bc..08767fbb8 100644 --- a/meta/template/string.lua +++ b/meta/template/string.lua @@ -5,7 +5,7 @@ string = {} ---#DES 'string.byte' ----@param s string +---@param s string|number ---@param i? integer ---@param j? integer ---@return integer ... @@ -27,7 +27,7 @@ function string.char(byte, ...) end function string.dump(f, strip) end ---#DES 'string.find' ----@param s string +---@param s string|number ---@param pattern string ---@param init? integer ---@param plain? boolean @@ -60,7 +60,7 @@ function string.gmatch(s, pattern, init) end ---#end ---#DES 'string.gsub' ----@param s string +---@param s string|number ---@param pattern string ---@param repl string|number|table|function ---@param n? integer @@ -70,19 +70,19 @@ function string.gmatch(s, pattern, init) end function string.gsub(s, pattern, repl, n) end ---#DES 'string.len' ----@param s string +---@param s string|number ---@return integer ---@nodiscard function string.len(s) end ---#DES 'string.lower' ----@param s string +---@param s string|number ---@return string ---@nodiscard function string.lower(s) end ---#DES 'string.match' ----@param s string +---@param s string|number ---@param pattern string ---@param init? integer ---@return any ... @@ -107,14 +107,14 @@ function string.packsize(fmt) end ---#if VERSION <= 5.1 and not JIT then ---#DES 'string.rep<5.1' ----@param s string +---@param s string|number ---@param n integer ---@return string ---@nodiscard function string.rep(s, n) end ---#else ---#DES 'string.rep>5.2' ----@param s string +---@param s string|number ---@param n integer ---@param sep? string ---@return string @@ -123,13 +123,13 @@ function string.rep(s, n, sep) end ---#end ---#DES 'string.reverse' ----@param s string +---@param s string|number ---@return string ---@nodiscard function string.reverse(s) end ---#DES 'string.sub' ----@param s string +---@param s string|number ---@param i integer ---@param j? integer ---@return string @@ -147,7 +147,7 @@ function string.sub(s, i, j) end function string.unpack(fmt, s, pos) end ---#DES 'string.upper' ----@param s string +---@param s string|number ---@return string ---@nodiscard function string.upper(s) end From 56ff9fe3b0a4a7bf8a153c7664e07f09488a1b32 Mon Sep 17 00:00:00 2001 From: C3pa <41503714+C3pa@users.noreply.github.com> Date: Mon, 20 Mar 2023 11:59:01 +0100 Subject: [PATCH 2/5] Add some more number types to string API Co-authored-by: carsakiller --- meta/template/string.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meta/template/string.lua b/meta/template/string.lua index 08767fbb8..6b70ba84b 100644 --- a/meta/template/string.lua +++ b/meta/template/string.lua @@ -28,7 +28,7 @@ function string.dump(f, strip) end ---#DES 'string.find' ---@param s string|number ----@param pattern string +---@param pattern string|number ---@param init? integer ---@param plain? boolean ---@return integer start @@ -61,7 +61,7 @@ function string.gmatch(s, pattern, init) end ---#DES 'string.gsub' ---@param s string|number ----@param pattern string +---@param pattern string|number ---@param repl string|number|table|function ---@param n? integer ---@return string @@ -83,7 +83,7 @@ function string.lower(s) end ---#DES 'string.match' ---@param s string|number ----@param pattern string +---@param pattern string|number ---@param init? integer ---@return any ... ---@nodiscard @@ -116,7 +116,7 @@ function string.rep(s, n) end ---#DES 'string.rep>5.2' ---@param s string|number ---@param n integer ----@param sep? string +---@param sep? string|number ---@return string ---@nodiscard function string.rep(s, n, sep) end From 990b471005d490e9de2156cbe17b27685a2023d3 Mon Sep 17 00:00:00 2001 From: C3pa <41503714+C3pa@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:01:28 +0100 Subject: [PATCH 3/5] Change `string.format`'s argument to string|number --- meta/template/string.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/template/string.lua b/meta/template/string.lua index 6b70ba84b..b85673f3f 100644 --- a/meta/template/string.lua +++ b/meta/template/string.lua @@ -38,7 +38,7 @@ function string.dump(f, strip) end function string.find(s, pattern, init, plain) end ---#DES 'string.format' ----@param s any +---@param s string|number ---@param ... any ---@return string ---@nodiscard From 21c84316f4e76f0ab5472609492bafbf43b4f1ad Mon Sep 17 00:00:00 2001 From: C3pa <41503714+C3pa@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:07:09 +0100 Subject: [PATCH 4/5] Update string.gmatch argument types --- meta/template/string.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meta/template/string.lua b/meta/template/string.lua index b85673f3f..841654f5c 100644 --- a/meta/template/string.lua +++ b/meta/template/string.lua @@ -46,14 +46,14 @@ function string.format(s, ...) end ---#DES 'string.gmatch' ---#if VERSION <= 5.3 then ----@param s string ----@param pattern string +---@param s string|number +---@param pattern string|number ---@return fun():string, ... ---@nodiscard function string.gmatch(s, pattern) end ---#else ----@param s string ----@param pattern string +---@param s string|number +---@param pattern string|number ---@param init? integer ---@return fun():string, ... function string.gmatch(s, pattern, init) end From 166e2df161813d5039c664beb480c3b483913ac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Tue, 21 Mar 2023 11:35:09 +0800 Subject: [PATCH 5/5] pass tests --- test/hover/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/hover/init.lua b/test/hover/init.lua index 7521ddf40..e77d8c988 100644 --- a/test/hover/init.lua +++ b/test/hover/init.lua @@ -238,14 +238,14 @@ TEST [[ string.() ]] [[ -function string.sub(s: string, i: integer, j?: integer) +function string.sub(s: string|number, i: integer, j?: integer) -> string ]] TEST[[ ('xx'):() ]] -[[function string.sub(s: string, i: integer, j?: integer) +[[function string.sub(s: string|number, i: integer, j?: integer) -> string]] TEST [[ @@ -272,7 +272,7 @@ TEST [[ string.() ]] [[ -function string.lower(s: string) +function string.lower(s: string|number) -> string ]]