taoensso / sente

Realtime web comms library for Clojure/Script
https://www.taoensso.com/sente
Eclipse Public License 1.0
1.74k stars 193 forks source link

This does not seem to compile from 1.9.0-alpha15 upwards #311

Closed djtango closed 6 years ago

djtango commented 6 years ago

The highest version of Clojure I can get this to compile with seems to be 1.9.0-alpha14. Is this project still live?

danielcompton commented 6 years ago

What is the error you get?

djtango commented 6 years ago

Was able to reproduce this in a tiny project:

;;project.clj
(defproject sente-test "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.9.0-alpha15"]
                 [com.taoensso/sente "1.11.0"]]
  :repl-options {:init-ns sente-test.core})
;; sente-test.core
(ns sente-test.core
  (:require [taoensso.sente :as sente]))

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "Hello, World!"))
 :cause Call to clojure.core/refer-clojure did not conform to spec:
In: [2] val: (quote :as) fails at: [:args :exclude :op :spec] predicate: #{:exclude}
In: [2 1] val: :as fails at: [:args :exclude :op :quoted-spec :spec] predicate: #{:exclude}
In: [2] val: (quote :as) fails at: [:args :only :op :spec] predicate: #{:only}
In: [2 1] val: :as fails at: [:args :only :op :quoted-spec :spec] predicate: #{:only}
In: [2] val: (quote :as) fails at: [:args :rename :op :spec] predicate: #{:rename}
In: [2 1] val: :as fails at: [:args :rename :op :quoted-spec :spec] predicate: #{:rename}
:clojure.spec/args  ((quote :exclude) (quote [reduce transduce into merge map take partition partition-by bounded-count]) (quote :as) (quote core))

 :data #:clojure.spec{:problems ({:path [:args :exclude :op :spec], :pred #{:exclude}, :val (quote :as), :via [], :in [2]} {:path [:args :exclude :op :quoted-spec :spec], :pred #{:exclude}, :val :as, :via [], :in [2 1]} {:path [:args :only :op :spec], :pred #{:only}, :val (quote :as), :via [], :in [2]} {:path [:args :only :op :quoted-spec :spec], :pred #{:only}, :val :as, :via [], :in [2 1]} {:path [:args :rename :op :spec], :pred #{:rename}, :val (quote :as), :via [], :in [2]} {:path [:args :rename :op :quoted-spec :spec], :pred #{:rename}, :val :as, :via [], :in [2 1]}), :args ((quote :exclude) (quote [reduce transduce into merge map take partition partition-by bounded-count]) (quote :as) (quote core))}
 :via
 [{:type clojure.lang.Compiler$CompilerException
   :message clojure.lang.ExceptionInfo: Call to clojure.core/refer-clojure did not conform to spec:
In: [2] val: (quote :as) fails at: [:args :exclude :op :spec] predicate: #{:exclude}
In: [2 1] val: :as fails at: [:args :exclude :op :quoted-spec :spec] predicate: #{:exclude}
In: [2] val: (quote :as) fails at: [:args :only :op :spec] predicate: #{:only}
In: [2 1] val: :as fails at: [:args :only :op :quoted-spec :spec] predicate: #{:only}
In: [2] val: (quote :as) fails at: [:args :rename :op :spec] predicate: #{:rename}
In: [2 1] val: :as fails at: [:args :rename :op :quoted-spec :spec] predicate: #{:rename}
:clojure.spec/args  ((quote :exclude) (quote [reduce transduce into merge map take partition partition-by bounded-count]) (quote :as) (quote core))
 #:clojure.spec{:problems ({:path [:args :exclude :op :spec], :pred #{:exclude}, :val (quote :as), :via [], :in [2]} {:path [:args :exclude :op :quoted-spec :spec], :pred #{:exclude}, :val :as, :via [], :in [2 1]} {:path [:args :only :op :spec], :pred #{:only}, :val (quote :as), :via [], :in [2]} {:path [:args :only :op :quoted-spec :spec], :pred #{:only}, :val :as, :via [], :in [2 1]} {:path [:args :rename :op :spec], :pred #{:rename}, :val (quote :as), :via [], :in [2]} {:path [:args :rename :op :quoted-spec :spec], :pred #{:rename}, :val :as, :via [], :in [2 1]}), :args ((quote :exclude) (quote [reduce transduce into merge map take partition partition-by bounded-count]) (quote :as) (quote core))}, compiling:(clojure/core/async.clj:9:1)
   :at [clojure.lang.Compiler analyzeSeq Compiler.java 6926]}
  {:type clojure.lang.ExceptionInfo
   :message Call to clojure.core/refer-clojure did not conform to spec:
In: [2] val: (quote :as) fails at: [:args :exclude :op :spec] predicate: #{:exclude}
In: [2 1] val: :as fails at: [:args :exclude :op :quoted-spec :spec] predicate: #{:exclude}
In: [2] val: (quote :as) fails at: [:args :only :op :spec] predicate: #{:only}
In: [2 1] val: :as fails at: [:args :only :op :quoted-spec :spec] predicate: #{:only}
In: [2] val: (quote :as) fails at: [:args :rename :op :spec] predicate: #{:rename}
In: [2 1] val: :as fails at: [:args :rename :op :quoted-spec :spec] predicate: #{:rename}
:clojure.spec/args  ((quote :exclude) (quote [reduce transduce into merge map take partition partition-by bounded-count]) (quote :as) (quote core))

   :data #:clojure.spec{:problems ({:path [:args :exclude :op :spec], :pred #{:exclude}, :val (quote :as), :via [], :in [2]} {:path [:args :exclude :op :quoted-spec :spec], :pred #{:exclude}, :val :as, :via [], :in [2 1]} {:path [:args :only :op :spec], :pred #{:only}, :val (quote :as), :via [], :in [2]} {:path [:args :only :op :quoted-spec :spec], :pred #{:only}, :val :as, :via [], :in [2 1]} {:path [:args :rename :op :spec], :pred #{:rename}, :val (quote :as), :via [], :in [2]} {:path [:args :rename :op :quoted-spec :spec], :pred #{:rename}, :val :as, :via [], :in [2 1]}), :args ((quote :exclude) (quote [reduce transduce into merge map take partition partition-by bounded-count]) (quote :as) (quote core))}
   :at [clojure.core$ex_info invokeStatic core.clj 4725]}]
 :trace
 [[clojure.core$ex_info invokeStatic core.clj 4725]
  [clojure.spec$macroexpand_check invokeStatic spec.clj 697]
  [clojure.spec$macroexpand_check invoke spec.clj 686]
  [clojure.lang.AFn applyToHelper AFn.java 156]
  [clojure.lang.AFn applyTo AFn.java 144]
  [clojure.lang.Var applyTo Var.java 700]
  [clojure.lang.Compiler macroexpand1 Compiler.java 6816]
  [clojure.lang.Compiler analyzeSeq Compiler.java 6905]
  [clojure.lang.Compiler analyze Compiler.java 6701]
  [clojure.lang.Compiler analyze Compiler.java 6657]
  [clojure.lang.Compiler$BodyExpr$Parser parse Compiler.java 6030]
  [clojure.lang.Compiler$TryExpr$Parser parse Compiler.java 2277]
  [clojure.lang.Compiler analyzeSeq Compiler.java 6919]
  [clojure.lang.Compiler analyze Compiler.java 6701]
  [clojure.lang.Compiler analyze Compiler.java 6657]
  [clojure.lang.Compiler$BodyExpr$Parser parse Compiler.java 6030]
  [clojure.lang.Compiler$FnMethod parse Compiler.java 5407]
  [clojure.lang.Compiler$FnExpr parse Compiler.java 3973]
  [clojure.lang.Compiler analyzeSeq Compiler.java 6917]
  [clojure.lang.Compiler analyze Compiler.java 6701]
  [clojure.lang.Compiler analyzeSeq Compiler.java 6907]
  [clojure.lang.Compiler analyze Compiler.java 6701]
  [clojure.lang.Compiler analyze Compiler.java 6657]
  [clojure.lang.Compiler$InvokeExpr parse Compiler.java 3767]
  [clojure.lang.Compiler analyzeSeq Compiler.java 6921]
  [clojure.lang.Compiler analyze Compiler.java 6701]
  [clojure.lang.Compiler analyze Compiler.java 6657]
  [clojure.lang.Compiler$BodyExpr$Parser parse Compiler.java 6030]
  [clojure.lang.Compiler$FnMethod parse Compiler.java 5407]
  [clojure.lang.Compiler$FnExpr parse Compiler.java 3973]
  [clojure.lang.Compiler analyzeSeq Compiler.java 6917]
  [clojure.lang.Compiler analyze Compiler.java 6701]
  [clojure.lang.Compiler eval Compiler.java 6975]
  [clojure.lang.Compiler eval Compiler.java 6967]
  [clojure.lang.Compiler load Compiler.java 7430]
  [clojure.lang.RT loadResourceScript RT.java 374]
  [clojure.lang.RT loadResourceScript RT.java 365]
  [clojure.lang.RT load RT.java 455]
  [clojure.lang.RT load RT.java 421]
  [clojure.core$load$fn__7831 invoke core.clj 6008]
  [clojure.core$load invokeStatic core.clj 6007]
  [clojure.core$load doInvoke core.clj 5991]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5812]
  [clojure.core$load_one invoke core.clj 5807]
  [clojure.core$load_lib$fn__7776 invoke core.clj 5852]
  [clojure.core$load_lib invokeStatic core.clj 5851]
  [clojure.core$load_lib doInvoke core.clj 5832]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 659]
  [clojure.core$load_libs invokeStatic core.clj 5889]
  [clojure.core$load_libs doInvoke core.clj 5873]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 659]
  [clojure.core$require invokeStatic core.clj 5911]
  [clojure.core$require doInvoke core.clj 5911]
  [clojure.lang.RestFn invoke RestFn.java 482]
  [taoensso.sente$eval32$loading__7717__auto____33 invoke sente.cljc 1]
  [taoensso.sente$eval32 invokeStatic sente.cljc 1]
  [taoensso.sente$eval32 invoke sente.cljc 1]
  [clojure.lang.Compiler eval Compiler.java 6978]
  [clojure.lang.Compiler eval Compiler.java 6967]
  [clojure.lang.Compiler load Compiler.java 7430]
  [clojure.lang.RT loadResourceScript RT.java 374]
  [clojure.lang.RT loadResourceScript RT.java 365]
  [clojure.lang.RT load RT.java 455]
  [clojure.lang.RT load RT.java 421]
  [clojure.core$load$fn__7831 invoke core.clj 6008]
  [clojure.core$load invokeStatic core.clj 6007]
  [clojure.core$load doInvoke core.clj 5991]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5812]
  [clojure.core$load_one invoke core.clj 5807]
  [clojure.core$load_lib$fn__7776 invoke core.clj 5852]
  [clojure.core$load_lib invokeStatic core.clj 5851]
  [clojure.core$load_lib doInvoke core.clj 5832]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 659]
  [clojure.core$load_libs invokeStatic core.clj 5889]
  [clojure.core$load_libs doInvoke core.clj 5873]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 659]
  [clojure.core$require invokeStatic core.clj 5911]
  [clojure.core$require doInvoke core.clj 5911]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [sente_test.core$eval24$loading__7717__auto____25 invoke core.clj 1]
  [sente_test.core$eval24 invokeStatic core.clj 1]
  [sente_test.core$eval24 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6978]
  [clojure.lang.Compiler eval Compiler.java 6967]
  [clojure.lang.Compiler load Compiler.java 7430]
  [clojure.lang.RT loadResourceScript RT.java 374]
  [clojure.lang.RT loadResourceScript RT.java 365]
  [clojure.lang.RT load RT.java 455]
  [clojure.lang.RT load RT.java 421]
  [clojure.core$load$fn__7831 invoke core.clj 6008]
  [clojure.core$load invokeStatic core.clj 6007]
  [clojure.core$load doInvoke core.clj 5991]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5812]
  [clojure.core$load_one invoke core.clj 5807]
  [clojure.core$load_lib$fn__7776 invoke core.clj 5852]
  [clojure.core$load_lib invokeStatic core.clj 5851]
  [clojure.core$load_lib doInvoke core.clj 5832]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 659]
  [clojure.core$load_libs invokeStatic core.clj 5889]
  [clojure.core$load_libs doInvoke core.clj 5873]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 659]
  [clojure.core$require invokeStatic core.clj 5911]
  [clojure.core$require doInvoke core.clj 5911]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [user$eval15 invokeStatic form-init1356771862937746936.clj 1]
  [user$eval15 invoke form-init1356771862937746936.clj 1]
  [clojure.lang.Compiler eval Compiler.java 6978]
  [clojure.lang.Compiler eval Compiler.java 6967]
  [clojure.lang.Compiler eval Compiler.java 6967]
  [clojure.lang.Compiler load Compiler.java 7430]
  [clojure.lang.Compiler loadFile Compiler.java 7368]
  [clojure.main$load_script invokeStatic main.clj 277]
  [clojure.main$init_opt invokeStatic main.clj 279]
  [clojure.main$init_opt invoke main.clj 279]
  [clojure.main$initialize invokeStatic main.clj 310]
  [clojure.main$null_opt invokeStatic main.clj 344]
  [clojure.main$null_opt invoke main.clj 341]
  [clojure.main$main invokeStatic main.clj 423]
  [clojure.main$main doInvoke main.clj 386]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.lang.Var applyTo Var.java 700]
  [clojure.main main main.java 37]]}
danielcompton commented 6 years ago

Looks like an issue with the ns form, happy to take a patch for it.

rafd commented 6 years ago

Just ran into this on clojure-1.9.0-beta1. It's actually caused by the core.async version used by sente 1.11.0. There's already been a sente patch to use a more recent version without the issue (https://github.com/ptaoussanis/sente/commit/95288e56b3637b8d70372c79175507134ba80610), but a new version of sente needs to be released.

In the meantime, if you are running into this issue, you can fix it by modifying your dependencies:

  [com.taoensso/sente "1.11.0" :exclusions [org.clojure/core.async]]
  [org.clojure/core.async "0.3.443"]
ptaoussanis commented 6 years ago

Thanks for the report Vadim! Closing this since I'm about to push the solution provided by @theasp with #315.