Thanks to visit codestin.com
Credit goes to github.com

Skip to content

+ can't be instrumented in Planck REPL #214

@borkdude

Description

@borkdude

This works in normal CLJS:

$ clj -A:test -m cljs.main -re node -r
ClojureScript 1.10.439
cljs.user=> (require '[speculative.instrument :refer [instrument]])
nil
cljs.user=> (count (instrument))
65

But this fails on Planck:

$ plk -A:test
ClojureScript 1.10.439
cljs.user=> (require '[speculative.instrument :refer [instrument]])
nil
cljs.user=>  (count (instrument))
cljs.user=> (count (instrument))
Call to #'cljs.core/+ did not conform to spec.
	cljs.core/ExceptionInfo (cljs/core.cljs:11154:11)
	cljs.core/ex-info (cljs/core.cljs:11181:7)
	workarounds-1-10-439.core/G__343__delegate (workarounds_1_10_439/core.cljs:44:42)
	cljs/lang/applyTo (workarounds_1_10_439/core.cljs:41:20)
	cljs.core/apply (cljs/core.cljs:3887:7)
	cljs.core/e (cljs/core.cljs:4301:31)
	planck.repl/print-value (planck/repl.cljs:1948:27)
	cljs.core/e (cljs/core.cljs:4244:17)
	cljs.js/I (cljs/js.cljs:1131:24)
	cljs.js/eval-str* (cljs/js.cljs:1045:6)
	planck.repl/process-execute-source (planck/repl.cljs:2010:11)
	planck.repl/execute-source (planck/repl.cljs:2063:18)
	planck.repl/execute (planck/repl.cljs:2072:7)

This didn't seem to help:

(require '[ workarounds-1-10-439.core])

After calling (speculative.instrument/unstrument) the error becomes inspectable:

cljs.user=> *e
#error {:message "Call to #'cljs.core/+ did not conform to spec.", :data #:cljs.spec.alpha{:problems [{:path [], :pred cljs.core/number?, :val nil, :via [:speculative.specs/number :speculative.specs/number], :in [1]}], :spec #object[cljs.spec.alpha.t_cljs$spec$alpha6210], :value (221 nil), :fn cljs.core/+, :args (221 nil), :failure :instrument}}

Another way to repro:

(require  '[clojure.spec.alpha :as s])
(require '[clojure.spec.test.alpha :as stest])
(s/fdef clojure.core/+ :args (s/and (s/cat :nums (s/* any?)) #(do (println "NUMS" %) %)))
(stest/instrument `+)
;;=>
{:nums [221 nil]}
[cljs.core/+]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions