Skip to content

Commit

Permalink
add warn-on-interpretation flag
Browse files Browse the repository at this point in the history
  • Loading branch information
roman01la committed Jun 29, 2020
1 parent 14ced14 commit 66d352a
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
24 changes: 22 additions & 2 deletions src/daiquiri/compiler.clj
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,21 @@
[clojure.set :as set]
[cljs.analyzer :as ana]))

(def warn-on-interpretation (atom false))

(defn maybe-warn-on-interpret
([env expr]
(maybe-warn-on-interpret env expr nil))
([env expr tag]
(when @warn-on-interpretation
(binding [*out* *err*]
(let [column (:column env)
line (:line env)]
(println (str "WARNING: interpreting by default at " ana/*cljs-file* ":" line ":" column))
(prn expr)
(when tag
(println "Inferred tag was:" tag)))))))

(def ^:private primitive-types
"The set of primitive types that can be handled by React."
#{'js 'clj-nil 'js/React.Element
Expand Down Expand Up @@ -126,8 +141,12 @@
`daiquiri.interpreter/interpret` if the inferred return type is not a
primitive React type."
[expr]
(if (primitive-type? (infer-tag &env expr))
expr `(daiquiri.interpreter/interpret ~expr)))
(let [tag (infer-tag &env expr)]
(if (primitive-type? tag)
expr
(do
(maybe-warn-on-interpret &env expr tag)
`(daiquiri.interpreter/interpret ~expr)))))

(defn- form-name
"Get the name of the supplied form."
Expand Down Expand Up @@ -346,6 +365,7 @@

(defmethod compile-element :default
[element env]
(maybe-warn-on-interpret env element)
`(daiquiri.interpreter/interpret
[~(first element)
~@(for [x (rest element)]
Expand Down
3 changes: 3 additions & 0 deletions src/rum/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
[rum.cursor Cursor]
(rum.server_render JSComponent)))

(defmacro set-warn-on-interpretation! [v]
(reset! compiler/warn-on-interpretation v))

(defn- fn-body? [form]
(when (and (seq? form)
(vector? (first form)))
Expand Down

0 comments on commit 66d352a

Please sign in to comment.