TermiNexus
|
64b0cc84f6
|
test(lifetime): 加 P4 自别名用例
CaseSelfAliasTransfer:q = p; q = p 不得析构(运行时判等跳过覆盖释放),出口仍恰好释放一次。
|
2026-10-09 08:45:24 +08:00 |
|
TermiNexus
|
e8f47e3197
|
test(lifetime): NewLifetimeTest 增 P4 所有权转移用例
CaseOwnershipTransfer:q = p 后对 p 赋值不得析构(函数内断言 dtor_hits 未变),出口释放 q 恰好一次(调用方断言);同时把 CaseAlias 的注释更新为所有权转移语义。
|
2026-10-09 08:43:58 +08:00 |
|
TermiNexus
|
399f396694
|
test(lifetime): 修正 CaseRaiseCaught 的 dtor 计数时机
对象属于本函数,释放发生在函数返回那一刻;原用例在自己体内 return 之前就检查 dtor_hits,计数必然还没变,恒判 rc=1。拆出 CaseRaiseCaughtInner,把计数检查移到调用方(与 CaseRaiseExit 同口径)。
|
2026-10-08 22:27:47 +08:00 |
|
TermiNexus
|
c4a13644b1
|
test(lifetime): NewLifetimeTest 失败时打印具体 case 名与返回码
原来只打印失败总数(FAILED, N case(s) wrong),无法定位是哪条挂了;改为逐 case Check() 并在 dtor_hits 不符时打印实际值。
|
2026-10-08 22:26:26 +08:00 |
|
TermiNexus
|
c00b172da2
|
test(lifetime): NewLifetimeTest 增 P1 异常出口用例
- CaseRaiseExit:raise 传播出被调函数 → 离开前 __del__ + free 恰好 1 次(多一次=double free,少一次=异常路径泄漏)。
- CaseRaiseCaught:异常被本函数捕获时不得提前释放 —— except 体内读对象验证仍有效,出口再释放 1 次。
|
2026-10-08 21:04:57 +08:00 |
|
TermiNexus
|
1724874967
|
test(lifetime): 新增 NewLifetimeAsyncTest 负向工程;测试项目 main 统一为 export def main() -> int
- NewLifetimeAsyncTest:协程体里的 new heap slife 必须报 LifetimeError(fail-fast 的回归覆盖),已挂进 ESCAPE_PROJECTS / NEGATIVE_PROJECTS / NEGATIVE_PROJECT_NAMES 与 README。
- NewLifetimeTest / NewLifetimeFreeTest 的 main 改为 export def main() -> int,并删掉多余的 t/c 导入(与 FuncTest / FormatStringTest / NewTest 一致)。
|
2026-10-08 20:42:14 +08:00 |
|
TermiNexus
|
d0165951b7
|
test(lifetime): NewLifetimeTest 增析构调度用例,README 补 escape 项目说明
- 新增 §3.6 用例:DtorPoint.__del__ 计数验证 —— 出口释放恰好 1 次、循环 3 轮(2 次覆盖释放 + 1 次出口)共 3 次;析构与释放点一一对应。
- README:NewLifetimeTest 补析构调度覆盖;NewLifetimeFreeTest 说明手动 del 同样被拒。
|
2026-10-08 20:34:23 +08:00 |
|
TermiNexus
|
7451adf523
|
test(lifetime): 新增 NewLifetimeTest/NewLifetimeFreeTest 与 IR 断言,escape 跑法纳入新项目
- NewLifetimeTest(正向,9 用例自检 + 退出码判定):出口释放 / 循环内覆盖释放 / 别名只释放一次 / 嵌套函数登记区间隔离 / early return / void 裸 return / 仅分支里 new 时 free(NULL) / stack slife 不释放。
- NewLifetimeFreeTest(负向):对 slife 对象手动 stdlib.free → LifetimeError。
- SequentialRegressionTest 增 IR_EXPECT:编译成功后断言生成的 IR 出现 llvm.call @free(漏释放=纯泄漏,退出码看不出来);--escape/--only 纳入两个新项目,run_lifetime_negative_tests.py 同步。
|
2026-10-08 20:04:12 +08:00 |
|