From 00ddb296ac164a55cc92f6c2ec0d0f6380981695 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Sun, 11 Oct 2026 11:58:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(narrow):=20=E5=AD=97=E8=8A=82=E7=BC=93?= =?UTF-8?q?=E5=86=B2=E5=86=99=20int/=E7=AE=97=E6=9C=AF=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E6=94=B9=E7=94=A8=20char(...)=EF=BC=88sys/=5Ffakeduck=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sys.vp cmd 解析 ch:int 写 buf;_fakeduck ch±32 算术提升为 int。目标均为 bytes(i8),RHS 为 32 位,触发 32->8 隐式窄化。其余 for ch in 形态 ch 是 char,同宽不报错 --- _fakeduck.vp | 18 +++++++++--------- sys.vp | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/_fakeduck.vp b/_fakeduck.vp index 8b90aed..74414f5 100644 --- a/_fakeduck.vp +++ b/_fakeduck.vp @@ -22,7 +22,7 @@ class _str: for i, ch in enumerate(src): if ch >= 97: if ch <= 122: - buf[i] = ch - 32 + buf[i] = char(ch - 32) else: buf[i] = ch else: @@ -38,7 +38,7 @@ class _str: for i, ch in enumerate(src): if ch >= 65: if ch <= 90: - buf[i] = ch + 32 + buf[i] = char(ch + 32) else: buf[i] = ch else: @@ -57,7 +57,7 @@ class _str: first = False if ch >= 97: if ch <= 122: - buf[i] = ch - 32 + buf[i] = char(ch - 32) else: buf[i] = ch else: @@ -65,7 +65,7 @@ class _str: else: if ch >= 65: if ch <= 90: - buf[i] = ch + 32 + buf[i] = char(ch + 32) else: buf[i] = ch else: @@ -81,13 +81,13 @@ class _str: for i, ch in enumerate(src): if ch >= 97: if ch <= 122: - buf[i] = ch - 32 + buf[i] = char(ch - 32) else: buf[i] = ch else: if ch >= 65: if ch <= 90: - buf[i] = ch + 32 + buf[i] = char(ch + 32) else: buf[i] = ch else: @@ -114,7 +114,7 @@ class _str: if prev_alpha: if ch >= 65: if ch <= 90: - buf[i] = ch + 32 + buf[i] = char(ch + 32) else: buf[i] = ch else: @@ -122,7 +122,7 @@ class _str: else: if ch >= 97: if ch <= 122: - buf[i] = ch - 32 + buf[i] = char(ch - 32) else: buf[i] = ch else: @@ -141,7 +141,7 @@ class _str: for i, ch in enumerate(src): if ch >= 65: if ch <= 90: - buf[i] = ch + 32 + buf[i] = char(ch + 32) else: buf[i] = ch else: diff --git a/sys.vp b/sys.vp index 4569988..87f420c 100644 --- a/sys.vp +++ b/sys.vp @@ -105,7 +105,7 @@ def _init_argv_win32(): argv_arr[argc] = str(buf + j) argc += 1 in_arg = True - buf[j] = ch + buf[j] = char(ch) j += 1 if in_arg: buf[j] = 0 _argc = argc