The modified version works for me, so not sure what you're seeing. $ clj Clojure 1.10.0 user=> (ns issue (:require [clojure.test :as t] [clojure.spec.alpha :as s] [clojure.spec.test.alpha :as st])) nil
issue=> (s/def ::boolean-supplier (s/fspec :args (s/cat) :ret boolean?)) :issue/boolean-supplier issue=> (defn make-fn [boolean-supplier] (fn [] (boolean-supplier))) #'issue/make-fn issue=> (s/fdef make-fn :args (s/cat :supplier ::boolean-supplier)) issue/make-fn issue=> (t/deftest issue (t/testing "issue demo" (st/instrument) (make-fn (fn [] true)))) #'issue/issue issue=> (issue) nil On Thu, Jan 17, 2019 at 9:09 AM Josip Gracin <josip.gra...@gmail.com> wrote: > Thanks! I understand why my version is incorrect. However, I get the > same error with the corrected spec. > > On Thursday, January 17, 2019 at 3:26:24 PM UTC+1, Alex Miller wrote: >> >> Your boolean-supplier should be: >> >> (s/def ::boolean-supplier >> (s/fspec >> :args (s/cat) >> :ret boolean?)) >> >> >> >> On Thursday, January 17, 2019 at 6:38:44 AM UTC-6, Josip Gracin wrote: >>> >>> Hi! >>> >>> The following test throws an exception when run using "lein test" and I >>> can't figure out why. >>> >>> (ns issue >>> (:require [clojure.test :as t] >>> [clojure.spec.alpha :as s] >>> [clojure.spec.test.alpha :as st])) >>> >>> (s/fdef ::boolean-supplier >>> :args (s/cat) >>> :ret boolean?) >>> >>> (defn make-fn [boolean-supplier] >>> (fn [] >>> (boolean-supplier))) >>> >>> (s/fdef make-fn >>> :args (s/cat :supplier ::boolean-supplier)) >>> >>> (t/deftest issue >>> (t/testing "issue demo" >>> (st/instrument) >>> (make-fn (fn [] true)))) >>> >>> Here's the output of "lein test": >>> >>> $ lein test >>> >>> lein test issue >>> >>> lein test :only issue/issue >>> >>> >>> ERROR in (issue) (Compiler.java:7647) >>> Uncaught exception, not in assertion. >>> >>> expected: nil >>> >>> actual: clojure.lang.Compiler$CompilerException: Syntax error >>> compiling at (clojure/test/check/clojure_test.cljc:95:1). >>> #:clojure.error{:phase :compile-syntax-check, :line 95, :column 1, >>> :source "clojure/test/check/clojure_test.cljc"} >>> at clojure.lang.Compiler.load (Compiler.java:7647) >>> >>> clojure.lang.RT.loadResourceScript (RT.java:381) >>> clojure.lang.RT.loadResourceScript (RT.java:372) >>> >>> clojure.lang.RT.load (RT.java:463) >>> clojure.lang.RT.load (RT.java:428) >>> ... >>> Caused by: java.lang.ClassCastException: clojure.lang.AFunction$1 cannot >>> be cast to clojure.lang.MultiFn >>> at clojure.core$get_method.invokeStatic (core.clj:1817) >>> clojure.core$get_method.invoke (core.clj:1817) >>> >>> clojure.test.check.clojure_test$eval1131.invokeStatic >>> (clojure_test.cljc:95) >>> clojure.test.check.clojure_test$eval1131.invoke >>> (clojure_test.cljc:95) >>> clojure.lang.Compiler.eval (Compiler.java:7176) >>> >>> clojure.lang.Compiler.load (Compiler.java:7635) >>> ... >>> >>> Using Java 10.0.2 and the following dependencies: >>> >>> $ lein deps :tree >>> [clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]] >>> [nrepl "0.5.3" :exclusions [[org.clojure/clojure]]] >>> [nrepl/bencode "1.0.0"] >>> [org.clojure/clojure "1.10.0"] >>> [org.clojure/core.specs.alpha "0.2.44"] >>> [org.clojure/spec.alpha "0.2.176"] >>> [org.clojure/test.check "0.9.0"] >>> >>> Any ideas? >>> >>> -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/EkAgPjrree0/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.