infinite generator transform is no longer infinite
@rbuckton 已经在做这个了。
开始于 2023年11月10日。
评估
这个 Issue 还没有评估数据。
描述
🔎 Search Terms
A function returning 'never' cannot have a reachable end point.
🕗 Version & Regression Information
This is the behavior in every version I tried, and I reviewed the FAQ for entries about never and generator.
⏯ Playground Link
💻 Code
function* cycle<T>(iterable: Iterable<T>): Generator<T, never, undefined> {
while (true) yield* iterable;
}
function* example(text: string): Generator<-1 | 1, never> {
for (const char of cycle(Array.from(text))) yield char === "<" ? -1 : 1;
}
🙁 Actual behavior
The second generator function build on top of the first where consumers of cycle do not need to check IteratorResult#done as the never return type is interpreted as never done. This is great for direct callers of cycle() but other generator functions building on top of cycle() are not inferred too as having a return type of never.
🙂 Expected behavior
A loop over an infinite generator (i.e. one with a return type of never) is also inferred as an infinite loop.
Additional information about the issue
A throw statement can be added after the loop as a workaround but I think this shouldn't be necessary:
function* example(text: string): Generator<-1 | 1, never> {
for (const char of cycle(Array.from(text))) yield char === "<" ? -1 : 1;
throw new Error("unreachable");
}
- 主要语言
- Go
- 星标
- 111k
- 派生
- 14.4k
- 平均合并
- 1 天 19 小时
- 30 天内合并 PR
- 117
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/TypeScript 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 88/100
microsoft/TypeScript#64322 · 2 条评论 · 1 个 reaction · 已指派 2 人 ·
-
Possible Improvement
难度 2/5 1-3 小时 新手友好度 78/100
microsoft/TypeScript#64278 · 1 条评论 · 1 个 reaction ·
-
Docs
难度 2/5 1-3 小时 新手友好度 70/100
microsoft/TypeScript#64118 · 1 条评论 ·
-
难度 1/5 1 小时以内 新手友好度 88/100
microsoft/TypeScript#64094 ·
-
Docs
难度 2/5 1-3 小时 新手友好度 76/100
microsoft/TypeScript#63959 · 5 条评论 ·
查看 microsoft/TypeScript 的全部 Issue
相似的 Issue
-
kind/bug
难度 2/5 1-3 小时 新手友好度 88/100
kubernetes-sigs/prow#953 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 88/100
caddyserver/caddy#8046 ·
-
难度 2/5 1-3 小时 新手友好度 86/100
-
L1 recommended for recruits
难度 2/5 1-3 小时 新手友好度 88/100
-
area/entangle bug
难度 1/5 1 小时以内 新手友好度 92/100