commander 15 help.js: SC2001 deferred sites, --help throws at runtime

未关闭
#3,533 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
46/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
typescript

调研方向

Start by reading the compiler's handling of deferred sites and diagnostics, then inspect how it processes the reported sites in dependency file help.js from [email protected]; the issue does not identify the corresponding scriptc source files or tests. Reproduce with the supplied TypeScript example and scriptc coverage cmd.ts, then use --explain-island=commander to inspect the deferred sites. Done means --help runs successfully, or the build reports an actionable error instead of producing a runtime throw.

由索引模型根据 Issue 内容生成。

描述

scriptc 0.4.11, main at 918d80b26a, macOS arm64.

[email protected] does not compile statically. Repro with a project that has commander installed:

import { Command } from "commander";
const p = new Command();
p.name("x").option("-a, --all", "all").action(() => console.log("run"));
p.parse(process.argv);

scriptc coverage cmd.ts reports 99% static, then:

  • lib/help.js:50:39 SC2001: values of type 'string' cannot be compiled yet ... (instantiating 'vis...')
  • lib/help.js:132:26 SC2001: values of type '(a: Option, b: Option) => number' cannot be compiled yet
  • 8 sites deferred to runtime (JS statements that throw their fence if executed), +6 more reasons in 1 module (--explain-island=commander).

Impact: the build succeeds, but --help hits a deferred site and throws at runtime. The SC1090 diagnostic also appears for this module when built without islands.

Expected: help.js compiles, or the build refuses rather than deferring. The hint "restate the value's type" is not actionable inside node_modules; a note that the site is in a dependency would help.

主要语言
TypeScript
星标
6.5k
派生
212
平均合并
13 小时 46 分钟
30 天内合并 PR
787

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

vercel-labs/scriptc 的其他 Issue

查看 vercel-labs/scriptc 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。