TermiNexus
|
5fa5a9f37c
|
test(lifetime): 补 P3 注解形态 + P2 方法级/取地址的自动工程
- 新增 NewLifetimeAnnFieldEscapeTest:h.p: int* = &local → LifetimeError(P3 注解形态)
- 新增 NewLifetimeWillFreeMethodTest:r.Release(p) 后再用 p → LifetimeError(方法级标注,形参位含 self 偏移)
- 新增 NewLifetimeWillFreeAddrTest:stdlib.free(p) 后 &p → LifetimeError(取地址路径)
- NewLifetimeTest.CaseAnnFieldStore:p.x: int = 42 必须真的写进字段(正向)
- 注册进 SequentialRegressionTest / regression_test / run_lifetime_negative_tests + README
|
2026-10-09 14:55:52 +08:00 |
|
TermiNexus
|
cd102989a8
|
test(lifetime): 新增 P3 负向工程(堆对象字段收下本帧栈地址)
NewLifetimeFieldEscapeTest:h.p = &local(h 由 new heap hlife 得到,字段活得比本帧长)必须报 LifetimeError;同步注册到 SequentialRegressionTest / regression_test / run_lifetime_negative_tests 与 README。
|
2026-10-08 22:47:40 +08:00 |
|
TermiNexus
|
e74397e932
|
test(lifetime): 新增关键字实参路径的 willFree 负向工程
NewLifetimeWillFreeKwargTest:stdlib.free(p = p) 之后再用 p 必须报 LifetimeError,覆盖 P2 的关键字实参标记路径;同步注册到 SequentialRegressionTest / regression_test / run_lifetime_negative_tests 与 README。
|
2026-10-08 21:40:22 +08:00 |
|
TermiNexus
|
aed57de44c
|
test(lifetime): 新增 willFree 正/负向工程并注册到回归脚本
NewLifetimeWillFreeTest(二次 free)、NewLifetimeUseAfterFreeTest(释放后使用)为负向;NewLifetimeWillFreeOkTest 验证合法用法与重赋值清除失效态。同步更新 SequentialRegressionTest / regression_test / run_lifetime_negative_tests 与 README。
|
2026-10-08 21:28:55 +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
|
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 |
|
TermiNexus
|
12c96d3039
|
fix(test): --exe 绝对化并校验存在性,修 Test/NewTest 报 cannot find the path specified
编译以 cwd=项目目录 执行,--exe 若是相对路径会按各项目层级解析:根级 escape 项目只深一层能命中,Test/NewTest 深两层就启动失败(耗时 0.0s 且无任何产物)。
SequentialRegressionTest.build_compile_cmd 与 run_lifetime_negative_tests.py 都改为 os.path.abspath(--exe),并在文件不存在时立即报错退出(避免静默跑到最后一个项目才暴露)。
|
2026-10-08 18:03:12 +08:00 |
|
TermiNexus
|
ed204852c4
|
test(lifetime): 新增生命期负向运行器;NewTest 补 memgr 用例
run_lifetime_negative_tests.py:只用 TransPyV 编译并断言编译失败且输出含 LifetimeError(TPC 解析不了 new、也产不出 LifetimeError,故与 NegativeTest 的 TPC 运行器分开);默认跑 EscapeTest / EscapeMethodTest / EscapeXmodTest,支持 --only/--rebuild-includes。
NewTest:按 MemhubTest 的写法补上 new memgr(m) hlife Point(5,6) 段(memhub.MemBuddy(arena, 65536))。README 同步负向运行器用法。
|
2026-10-08 17:50:53 +08:00 |
|