承接 #291(已关闭)遗留的回归用例。实现已验收,但 issue 正文末尾承诺的三类用例未入库,导致该特性**没有回归护栏**:后续改动若破坏多赋值,CI 不会察觉。 ## 待补(三项) - [ ] **arity 负例** —— `error_cases/` 新增用例:`1, 2 -> a, b, c` 应报 `multi-assignment arity mismatch: 2 reads vs 3 writes` 并拒装载(error 级)。 参考目录:`error_cases/type_error/` 旁另立或就近放置。 ```kv // expected: // error: multi-assignment arity mismatch: 2 reads vs 3 writes rwfunc test() -> () { 1, 2 -> a, b, c } ``` - [ ] **`=` 形态用例** —— tutorial 新增:`x, y = 10, 20` ≡ `10 -> x`、`20 -> y`。 实测可用但未固化。 - [ ] **函数调用展开保序用例** —— tutorial 新增:读槽侧含函数调用时,按 lower 的常规嵌套摊平 (临时槽 `_N`),展开**保序**。 ⚠️ 这条**本身未经实测**,是三项里最需要先验证的(其余两项已手工验证通过)。 ## 验收 - 三个用例各就位,且在 `shm` 与 `fs` 两个后端下均通过(`python3 tutorial/test.py` + `error_cases/error_test.py`)。 - 负例的期望文本与 parser 实际诊断串**逐字一致**(含 `N reads vs M writes` 计数)。 ## 参考 - 实现:`layout/src/parser.rs`(`parse_read_list` / `expand_multi` / `parse_inst → Vec<Instruction>`) - 条款:`stdlib/kvlang/spec/04-layout语义/01-指令架构.kv` §多赋值;`stdlib/kvlang/spec/附录/04-指令.kv` 文法 `read_list` - 锚例:`tutorial/12-struct/01-fields.kv` - 关闭留档:#291 的 comment(已列同样的三项)
承接 #291(已关闭)遗留的回归用例。实现已验收,但 issue 正文末尾承诺的三类用例未入库,导致该特性没有回归护栏:后续改动若破坏多赋值,CI 不会察觉。
待补(三项)
error_cases/新增用例:1, 2 -> a, b, c应报multi-assignment arity mismatch: 2 reads vs 3 writes并拒装载(error 级)。参考目录:
error_cases/type_error/旁另立或就近放置。=形态用例 —— tutorial 新增:x, y = 10, 20≡10 -> x、20 -> y。实测可用但未固化。
(临时槽
_N),展开保序。验收
shm与fs两个后端下均通过(python3 tutorial/test.py+error_cases/error_test.py)。N reads vs M writes计数)。参考
layout/src/parser.rs(parse_read_list/expand_multi/parse_inst → Vec<Instruction>)stdlib/kvlang/spec/04-layout语义/01-指令架构.kv§多赋值;stdlib/kvlang/spec/附录/04-指令.kv文法read_listtutorial/12-struct/01-fields.kv