Archived
This repository has been archived on 2026-09-13 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
647b86753a33863bcbf8549a99fcf9157918c9d4
**`when` 从前一条都没审**(§5.7 第三条明写要审)。运行时两种下场都不好:
嵌在表达式里的 `{when}` 出错 → `evalExpr` catch 掉、**静默走 else**;
动作级的 `when` 出错 → 抛 → 整步交人。现在:
· 所有 `when`(含嵌套在表达式里的)审语法,过 `@sfeel` 的 `staticCheck`;
· **只有动作级**那一层连名字绑不绑得上一起审 —— 嵌套的 `when` 还看得见行内的
`col`/`outer`/`computed`,拿 `boundNames` 去卡会误报。
名字取 AST 的 `references` 而不是本文件那个正则:正则会把 `count(...)`
这类内建函数名也报成未绑定的台账名。
另三处「装包期判得出、却留到运行时」的:
· `submit.rationale` 与 `recipe.let` 的表达式从没被 `walkExpr` 走过
(与这轮已修的 card/say 那个洞同族);
· `project.fields` 不含目标表的某个主键列 —— 运行时那一行**静默 continue**,
一行不写、一条痕都没有,表里少了行谁也查不出为什么;
· `card` 没有 `basis` —— 基座拒发 basis 为空的工单(契约注释自己写着
「别指望兜底」),运行时那一拒是抛,抛出去就是整步交人。
10 测。既有那条 `toEqual([])` 的用例把主键列补进了 fixture(那份配方本来就是坏的),
断言一个字没弱化。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
Description
No description provided
9.3 MiB
Languages
TypeScript
90.1%
CSS
7.3%
JavaScript
2%
Shell
0.4%
Python
0.1%