评论人:freakhill
我在 defrecord 中发现了相当类似的问题。是否有某种解决方案?
project.clj http://pastebin.com/bn6giuvH
core_typed_bug/core.clj http://pastebin.com/JjfhWLSH
错误信息 http://pastebin.com/djsAicd1
在 clojure 1.7.0-beta2 和 core.typed 0.2.87 上
`
(ns core-typed-bug.core
(:require [ clojure.core.typed :as t ]))
(t/defprotocol P
(f
[a] :- Any
[a b :- Any] :- Any))
(t/ann-record R [])
(defrecord R []
P
(f [a] 1)
(f [a b] 2))
会产生以下参数相关的错误
收集 1 个命名空间耗时 758.831468 毫秒
不检查 clojure.core.typed (不依赖于 clojure.core.typed)
开始检查 core-typed-bug.core
10: 不检查 core-typed-bug.core/->R 定义
检查 core-typed-bug.core 耗时 923.152062 毫秒
检查 2 个命名空间耗时 1702.704416 毫秒
类型错误(core_typed_bug/core.clj:10:1)未找到匹配的参数:[R t/Any -> t/Any]
在:(f [a] 1)
类型错误(core_typed_bug/core.clj:10:1)未找到匹配的参数:[R -> t/Any] 在:(f [a b] 2)
类型检查器:找到 2 个错误
找到错误
`