What you're seeing here is a spec failure on macro specs that have been added in Clojure 1.9+ (tighter checks on code, so basically identifying existing silently wrong code). Note that lein is itself a Clojure program with plugins and running on it's own version of Clojure, which can change independently of your app.
I think James' suggestion is a good one (the underlying core.unify issue was fixed and released years ago). On Tuesday, February 4, 2020 at 9:56:47 AM UTC-6, James Reeves wrote: > > This may be due to the plugins overriding a dependency that Leiningen > itself needs. There was an issue like this > <https://github.com/weavejester/lein-ring/issues/203> logged with > Lein-Ring, which I notice you're using. Try updating the Lein-Ring version > to 0.12.5 and see if that fixes the issue. > > On Tue, 4 Feb 2020 at 13:18, 'Simon Brooke' via Clojure < > clojure@googlegroups.com> wrote: > >> Hi all >> >> I recently wanted to do some work on a project of mine I've not worked on >> for more than a year, and found to my great surprise that it will no longer >> build. Full details of the bug are here >> <https://github.com/journeyman-cc/smeagol/issues/43>, but the core seems >> to be: >> >> clojure.lang.Compiler$CompilerException: Syntax error macroexpanding >> clojure.core/fn at (clojure/core/unify.clj:83:18). >> #:clojure.error{:phase :macro-syntax-check, :line 83, :column 18, :source >> "clojure/core/unify.clj", :symbol clojure.core/fn} >> at clojure.lang.Compiler.checkSpecs (Compiler.java:6971) >> >> ... >> >> Caused by: clojure.lang.ExceptionInfo: Call to clojure.core/fn did not >> conform to spec. >> #:clojure.spec.alpha{:problems ({:path [:fn-tail :arity-1 :params], :pred >> clojure.core/vector?, :val clojure.core.unify/var-unify, :via >> [:clojure.core.specs.alpha/params+body :clojure.core.specs.alpha/param-list >> :clojure.core.specs.alpha/param-list], :in [0]} {:path [:fn-tail :arity-n], >> :pred (clojure.core/fn [%] (clojure.core/or (clojure.core/nil? %) >> (clojure.core/sequential? %))), :val clojure.core.unify/var-unify, :via >> [:clojure.core.specs.alpha/params+body >> :clojure.core.specs.alpha/params+body], :in [0]}), :spec >> #object[clojure.spec.alpha$regex_spec_impl$reify__2509 0x7c214cc0 >> "clojure.spec.alpha$regex_spec_impl$reify__2509@7c214cc0"], :value >> (clojure.core.unify/var-unify [G__813 G__814 G__815 G__816] >> (clojure.core/if-let [vb__806__auto__ (G__816 G__814)] >> (clojure.core.unify/garner-unifiers G__813 vb__806__auto__ G__815 G__816) >> (clojure.core/if-let [vexpr__807__auto__ (clojure.core/and (G__813 G__815) >> (G__816 G__815))] (clojure.core.unify/garner-unifiers G__813 G__814 >> vexpr__807__auto__ G__816) (if (clojure.core.unify/occurs? G__813 G__814 >> G__815 G__816) (throw (java.lang.IllegalStateException. (clojure.core/str >> "Cycle found in the path " G__815))) (clojure.core.unify/bind-phase G__816 >> G__814 G__815))))), :args (clojure.core.unify/var-unify [G__813 G__814 >> G__815 G__816] (clojure.core/if-let [vb__806__auto__ (G__816 G__814)] >> (clojure.core.unify/garner-unifiers G__813 vb__806__auto__ G__815 G__816) >> (clojure.core/if-let [vexpr__807__auto__ (clojure.core/and (G__813 G__815) >> (G__816 G__815))] (clojure.core.unify/garner-unifiers G__813 G__814 >> vexpr__807__auto__ G__816) (if (clojure.core.unify/occurs? G__813 G__814 >> G__815 G__816) (throw (java.lang.IllegalStateException. (clojure.core/str >> "Cycle found in the path " G__815))) (clojure.core.unify/bind-phase G__816 >> G__814 G__815)))))} >> at clojure.spec.alpha$macroexpand_check.invokeStatic (alpha.clj:705) >> >> ... >> >> >> No functions of mine occur anywhere in the stacktrace, but below all the >> clojure compiler functions I get to: >> >> clojure.lang.RestFn.invoke (RestFn.java:408) >> leiningen.core.utils$require_resolve.invokeStatic (utils.clj:102) >> leiningen.core.utils$require_resolve.invoke (utils.clj:95) >> leiningen.core.utils$require_resolve.invokeStatic (utils.clj:105) >> leiningen.core.utils$require_resolve.invoke (utils.clj:95) >> leiningen.core.main$lookup_task_var.invokeStatic (main.clj:69) >> leiningen.core.main$lookup_task_var.invoke (main.clj:65) >> leiningen.core.main$pass_through_help_QMARK_.invokeStatic (main.clj:79) >> leiningen.core.main$pass_through_help_QMARK_.invoke (main.clj:73) >> leiningen.core.main$task_args.invokeStatic (main.clj:82) >> leiningen.core.main$task_args.invoke (main.clj:81) >> leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:339) >> leiningen.core.main$resolve_and_apply.invoke (main.clj:336) >> leiningen.core.main$_main$fn__6681.invoke (main.clj:452) >> leiningen.core.main$_main.invokeStatic (main.clj:442) >> leiningen.core.main$_main.doInvoke (main.clj:439) >> >> >> The versions of Leiningen I am currently using are `Leiningen 2.9.1 on >> Java 1.8.0_242 OpenJDK 64-Bit Server VM` and `Leiningen 2.9.1 on Java >> 11.0.6 OpenJDK 64-Bit Server VM`; I don't recall the version I was using a >> year ago. None of the project dependencies have changed, I'm running with >> this >> project.clj >> <https://github.com/journeyman-cc/smeagol/blob/master/project.clj>, >> which certainly did build thirteen months ago. >> >> My guess is that because my code has not changed, the version of Clojure >> used has not changed, and the dependencies have not changed, the only thing >> which is not controlled for is Leiningen. Has anyone else seen a problem >> like this, and if so how did you cure it? >> >> -- >> 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. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/clojure/4ce229bf-99c0-4922-aca2-8f0565e7feb0%40googlegroups.com >> >> <https://groups.google.com/d/msgid/clojure/4ce229bf-99c0-4922-aca2-8f0565e7feb0%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > James Reeves > booleanknot.com > -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/89f470ff-a941-4372-948e-de18b9c0128b%40googlegroups.com.