From cdc6e8bf7860fcaeb6078e409144df847c046888 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Tue, 29 Sep 2026 16:00:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(test):=20FakeDuckTest=20=E7=9A=84=203=20?= =?UTF-8?q?=E4=B8=AA=20list=20=E5=8F=98=E9=87=8F=E6=B3=A8=E8=A7=A3?= =?UTF-8?q?=E8=A1=A5=E4=B8=8A=E6=8C=87=E9=92=88=EF=BC=88list[str]=20?= =?UTF-8?q?=E2=86=92=20list[str]=20|=20t.CPtr=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【类别 c 源码违规(注解漏指针)】与 includes/_fakeduck.vp 的 split 返回注解配套: split 返回的是堆对象指针(list[T] 一律以指针传递),故接收变量也须按指针声明。 Test/FakeDuckTest/App/main.vp:260 list_s: list[str] → list[str] | t.CPtr Test/FakeDuckTest/App/main.vp:274 list_a: list[str] → list[str] | t.CPtr Test/FakeDuckTest/App/main.vp:275 list_b: list[str] → list[str] | t.CPtr 行为不变:len(list_s) / zip(list_a, list_b) / for-in 都作用在对象上做方法分派, 指针与值写法在这些用法下等价;改注解只为与新判据(指针↔非基本类型值不隐式互转)自洽。 全仓 list 型声明共 383 处用指针写法,本处 3 处是仅剩的值类型写法。 --- FakeDuckTest/App/main.vp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/FakeDuckTest/App/main.vp b/FakeDuckTest/App/main.vp index ead0e0b..7392cd5 100644 --- a/FakeDuckTest/App/main.vp +++ b/FakeDuckTest/App/main.vp @@ -257,7 +257,7 @@ def main() -> CInt | CExport: testcheck.check(t.CInt(w_buddy2) != 0, "with multi inject OK", "with multi inject FAIL") test_s: str = "www.gvsds.com" - list_s: list[str] = test_s.split('.') + list_s: list[str] | t.CPtr = test_s.split('.') # 迭代器测试: for idx, i in zip(range(len(list_s)), list_s) iter_count: int = 0 for iter_idx, i in zip(range(len(list_s)), list_s): @@ -271,8 +271,8 @@ def main() -> CInt | CExport: testcheck.section("Test 10: zip(list, list) 元组解包") za: str = "a,b,c" zb: str = "1,2,3" - list_a: list[str] = za.split(',') - list_b: list[str] = zb.split(',') + list_a: list[str] | t.CPtr = za.split(',') + list_b: list[str] | t.CPtr = zb.split(',') zip_idx: int = 0 for ca, cb in zip(list_a, list_b): stdio.printf("zip[%d]: '%s'='%s'\n", zip_idx, ca, cb)