现场:@life(noescape(a, b), ret(borrows=1)) 报 LifetimeError: @life(ret(borrows=...)) accepts only a parameter name or `none` —— _RetKindFromTag 的关键字分支只处理 Name(形参名)与 CONST_NONE,遇到整数常量 (形参位置序号)就落到 fail-fast。 修法:Name(形参名 / none)与 Constant(CONST_NONE = 非本帧)先分流, 其余一律交给 _WillFreeArgIndex —— 它本来就同时认"形参名"与"0 起序号" (与 willFree(...) 同口径,见 includes/stdlib.vp 注释),非法实参在那边 fail-fast。 于是 ret(borrows=x) 与 ret(borrows=0) 等价可用。