You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use std.list
use std.result
use std.string
main = {
n = list.len([1, 2, 3]) # E1002: Expected 'List(Any)', found 'List(int64)'
items = [1, 2, 3]
out = list.get(items, 0) # E1002 同上
r = string.parse_int("abc") # Result(Int, Error)
ok = result.is_err(r) # E1002: Expected 'Result(T, E)', found 'Result(int64, Error)'
}
背景
#242 已把 std
NativeExport.signature字符串解析为真实MonoType,但裸容器被固定解析为Any实参(signature.rs的"List" => MonoType::List(Any)分支)。这造成 native 模块与用户定义的 yx 模块类型语义不一致。用户模块里
(list: List)等价于隐式泛型(list: List(T)),调用时从实参推断T;native 模块里裸List却是固定的List(Any),且当前类型系统无协变/隐式提升,导致具体类型列表无法传入。复现
map/filter/reduce用显式[T]前缀可正常工作——证明解析器支持泛型,只是裸容器分支走错了路。目标
native 签名解析与用户 yx 模块无区别:裸
List/Result/Dict等容器应解析为带类型变量的泛型(调用点推断),而非固定Any。修好后list.len([1,2,3])、result.is_err(r)均应通过类型检查。影响
涉及文件
src/frontend/core/typecheck/signature.rs— 裸容器分支("List" => List(Any)等)[T]显式泛型(局部、有先例);路径 B:typecheck 裸容器按隐式泛型推断(系统级,与用户模块语义统一)关联