Thanks Thomas,
That was very helpful. I tried your suggestion and it works in JVM ClojureScript. That method does not work on bootstrapped ClojureScript though. As far as I understand this is a result of bootstrapped ClojureScript evaluating the .clj(c) file in the same JavaScript environment. Bootstrapped ClojureScript tries to emulate the separate compilation phase by putting all vars defined in the .clj file in a new namespace ending with `$macros` suffix. In other words, I had to do something like the following in order for my assertion to work on both JVM and bootstrapped ClojureScript: > (defmethod #?(:cljs cljs.test$macros/assert-expr > :clj cljs.test/assert-expr) > ... Is this the best way to achieve this? Thanks, JS Thomas Heller <th.hel...@gmail.com> writes: > Hey, > > cljs.test/assert-expr is part of the CLJ macro side so it can't be extended > from a CLJS REPL. You can write it in a .clj file and use (require-macros > 'that.ns) from the CLJS REPL or use :require-macros in the ns form that > uses the new assert-expr. > > HTH, > Thomas > > On Thursday, September 26, 2019 at 9:43:19 PM UTC+2, jvshahid wrote: >> >> Hi all, >> >> I am trying to implement custom assertions in ClojureScript. I tried to >> use defmethod but got the following error: >> >> > clojure -Sdeps '{:deps {org.clojure/clojurescript {:mvn/version >> "1.10.520"}}}' -m cljs.main --repl --repl-env node >> > cljs.user=> (require '[cljs.test]) >> > nil >> > cljs.user=> (defmethod cljs.test/assert-expr 'foo [& arg]) >> > WARNING: Use of undeclared Var cljs.test/assert-expr at line 1 <cljs >> repl> >> > Execution error (Error) at (<cljs repl>:1). >> > No protocol method IMultiFn.-add-method defined for type undefined: >> > >> > cljs.user=> cljs.test/assert-expr >> > WARNING: Use of undeclared Var cljs.test/assert-expr at line 1 <cljs >> repl> >> > nil >> >> What am I doing wrong? >> >> Thanks, >> >> JS >> -- 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/87impcm8bf.fsf%40gmail.com.