(defmacro lol2 [])
(let [a (list `typed/Option `typed/AnyInteger)]
`(fn [] :- ~a 1)))
(defmacro lol [])
`(fn [] :- (typed/Option typed/AnyInteger) 1))
(clojure.core.typed/def lol*2 :- [-> (typed/Option typed/AnyInteger)])
(lol2)
(clojure.core.typed/def lol* :- (typed/Option typed/AnyInteger))
(lol)
我把这段代码放在命名空间A中,两种类型的检查都没有问题。
当命名空间A被命名空间B依赖时,当对B进行校验时
lol*2完全正常,但lol*因以下错误而崩溃
"Bad type syntax: (clojure.core.typed/Option clojure.core.typed/AnyInteger)"
以下可以正常工作。
(defmacro lol**3 [])
`(fn [] :- typed/AnyInteger 1))
(clojure.core.typed/def lol*3 :- typed/AnyInteger)
(lol**3)