新增 3 个工程(均登记进 regression_test.py / SequentialRegressionTest.py / run_lifetime_negative_tests.py 的 escape/负向清单): - NewLifetimeRetOkTest(正向):ret(heap)/ret(static)/ret(borrows=none) 的结果 可存进堆对象字段;ret(frame)/ret(borrows=x) 的结果只在本帧内使用; 同模块契约表与跨模块 .vpi(escr=) 两条取用路径都覆盖 → 编译通过 + 退出码 0。 - NewLifetimeRetEscapeTest(负向):同模块 @life(ret(frame)) 的返回值写进堆对象 字段 → LifetimeError(隔离性:FrameRet 摘要为 0,唯一报错源是 ret 契约)。 - NewLifetimeRetXmodTest(负向):跨模块 @life(noescape(x), ret(borrows=x)) 的结果 写进堆对象字段 → LifetimeError(契约经对方 .vpi 的 escr= 传来;noescape 清掉了 实参逃逸路径,判据收敛到 ret 契约)。 README.md 的 escape 测试表与负向清单同步。
30 lines
856 B
JSON
30 lines
856 B
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/TermiNexus/TransPyC/main/schemas/project-schema.json",
|
|
"name": "NewLifetimeRetOkTest",
|
|
"version": "1.0.0",
|
|
"source_dir": "./App",
|
|
"build_dir": "./.tpv_build",
|
|
"compiler": {
|
|
"cmd": "llc",
|
|
"flags": ["-filetype=obj", "-relocation-model=pic"]
|
|
},
|
|
"linker": {
|
|
"cmd": "clang++",
|
|
"flags": ["-lmsvcrt", "-lucrt", "-lpthread", "-lmingwex", "-lkernel32"],
|
|
"output": "NewLifetimeRetOkTest.exe"
|
|
},
|
|
"includes": [
|
|
"../../includes"
|
|
],
|
|
"target": {
|
|
"triple": "x86_64-pc-windows-gnu",
|
|
"datalayout": "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
},
|
|
"options": {
|
|
"slice_level": 3,
|
|
"sha1_slice_level": 1,
|
|
"target": "llvm",
|
|
"strict_mode": true
|
|
}
|
|
}
|