2024 Clojure调查中分享您的想法!

欢迎!请查看关于页面了解这个网站是如何工作的更多信息。

0
core.typed

    (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)

1 个回答

0
参考:https://clojure.atlassian.net/browse/CTYP-191(由alexis+import报告)
...