This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-06-10
Channels
- # announcements (1)
- # babashka (178)
- # beginners (216)
- # bootstrapped-cljs (1)
- # brompton (5)
- # calva (3)
- # chlorine-clover (1)
- # clj-kondo (2)
- # cljdoc (37)
- # cljfx (4)
- # cljs-dev (2)
- # clojure (360)
- # clojure-chile (8)
- # clojure-europe (3)
- # clojure-italy (5)
- # clojure-nl (9)
- # clojure-spec (2)
- # clojure-sweden (1)
- # clojure-uk (61)
- # clojuredesign-podcast (1)
- # clojurescript (83)
- # clr (2)
- # conjure (4)
- # core-async (14)
- # cursive (20)
- # data-science (2)
- # datomic (15)
- # docker (11)
- # emotion-cljs (1)
- # figwheel-main (28)
- # find-my-lib (1)
- # fulcro (46)
- # helix (16)
- # honeysql (14)
- # jobs (10)
- # jobs-discuss (17)
- # joker (1)
- # juxt (9)
- # kaocha (8)
- # leiningen (3)
- # meander (3)
- # news-and-articles (1)
- # off-topic (110)
- # pathom (7)
- # pedestal (4)
- # protojure (2)
- # re-frame (12)
- # reagent (25)
- # ring (4)
- # shadow-cljs (109)
- # spacemacs (9)
- # specter (1)
- # sql (3)
- # tools-deps (23)
#bootstrapped-cljs2020-06-10
>
I’m using cljs.js/eval
in the browser, which is working great, but I’m having trouble evaling sources that call macros that I wrote. below is a small repro:
(defn default-load-fn [{:keys [name macros path] :as m} cb]
(prn "trying to load" m)
(throw "whoops!"))
(defn wrap-js-eval [resource]
(try
(cljs/js-eval resource)
(catch js/Object e
{::error e})))
(def compiler-options
{:source-map true
;; :context :statement
:ns 'test.ns
:verbose true
:load default-load-fn
:def-emits-var true
:eval wrap-js-eval})
(def state (cljs/empty-state))
(defn eval-next [statements]
(when-let [statement (first statements)]
(prn "evaling " statement)
(cljs/eval state
statement
compiler-options
#(do (prn "result: " %)
(eval-next (rest statements))))))
(eval-next [
'(ns test.ns)
'(defmacro test-macro [& body]
`(vector 42 ~@body))
'(test-macro 123)
;; console log:
;; "evaling " (test-macro 123)
;; "result: " {:value (cljs.core/vector 42)}
])
basically, the macro is being created, but its arguments are nil and it’s acting like a regular function and just returning its data rather than acting like a macro. Anyone know what I’m missing or have an example with macros that I can follow?
versions:
[org.clojure/clojure "1.10.0"]
[org.clojure/clojurescript "1.10.764"]