## 使用者影响 当前 main `663c00237e0b7d95b4b8a176f7f11348778e1b09` 的 `app.util/register-language!` 和 `HighlightHost.register-language!` 把语言定义参数标为 `JsObject`,但真实 Highlight.js 语言模块导出的是函数。该标注掩盖了函数边界,不能作为类型加强完成的证明。 安装的正式 npm `highlight.js@11.8.0` 官方声明:`registerLanguage(languageName: string, language: LanguageFn)`,`LanguageFn = (hljs: HLJSApi) => Language`;`lib/languages/clojure.js` 实际定义 `function clojure(hljs)`。owner 是 `highlightjs/highlight.js`,不是 Highlight.js 本身的声明错误。 建议本应用将这两个参数改为真实 Fn,保留其开放性,不假装已证明更具体的闭合 Calcit callable,也不增加 unsafe / JsObject 强转。有效 Clojure 语言定义和高亮行为保持,直接调用者必须传函数而不是普通对象。再用正式 Calcit 0.30.1 完整 strict、原测试和真实页面验证。 本轮正在实施针对性修复。前一候选已通过原门禁,但那不证明这处类型正确;尚未声称非法对象已执行或造成真实用户故障。无需编译器新增硬编码 fix/proof 规则、兼容预算或独立验证脚本。
Activity
tiye commentedon Oct 24, 2026
修复在 PR #21:语言参数改为真实开放 Fn,原始导入先 let 绑定局部,再通过 fn? 检查后传递同一函数。正式 0.30.1 完整 CI、原测试、实际注册/高亮/展示切换/刷新通过。不是用 unsafe 或类型断言伪造 callable 合同;未声称证明 LanguageFn 完整签名。导入与局部守卫的诊断差异已反馈 Calcit #2355,仅请求提示改进、不新增硬编码迁移规则。未合并或部署生产。