(ns typingfun.core
(:require [clojure.core.typed :as t]))
(t/ann-protocol AddProtoc
adder [AddProtoc Number -> AddProtoc])
(t/defprotocol> AddProtoc
(adder [this amount]))
(t/ann-datatype Accumulator [t :- Number])
(deftype Accumulator [t]
AddProtoc
(adder [_ i] (Accumulator. (+ t i))))
(t/ann t [Number -> Accumulator])
(defn t [i] (Accumulator. i))
(t/ann t2 [Number -> AddProtoc])
(defn t2 [i] (Accumulator. i))
(t/check-ns)
IllegalArgumentException Multiple methods in multimethod 'subtype*' match dispatch value: [clojure.core.typed.Protocol clojure.core.typed.Protocol :clojure.core.typed/clojure] -> [clojure.core.typed.Protocol :clojure.core.typed/Type :clojure.core.typed/clojure] and [clojure.core.typed.Protocol clojure.core.typed.Protocol :clojure.core.typed/default], and neither is preferred clojure.lang.MultiFn.findAndCacheBestMethod (MultiFn.java:136)