don't write class files for eval'd functions for inline path functions or protpath extensions.
This commit is contained in:
parent
925e2e91d6
commit
9c7f6fb65e
3 changed files with 10 additions and 2 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
## 1.1.3-SNAPSHOT
|
## 1.1.3-SNAPSHOT
|
||||||
|
|
||||||
|
* Better AOT behavior: path functions for inline caching and protpath extensions no longer write eval'd class files. You can force path functions to not override `*compile-files*` by binding `com.rpl.specter.impl/*path-compile-files*` to `true`.
|
||||||
* Bug fix: fix throw-illegal in cljs
|
* Bug fix: fix throw-illegal in cljs
|
||||||
|
|
||||||
## 1.1.2 - 2018-11-01
|
## 1.1.2 - 2018-11-01
|
||||||
|
|
|
||||||
|
|
@ -456,7 +456,8 @@
|
||||||
params (-> protpath-prot :sigs first last :arglists first)]
|
params (-> protpath-prot :sigs first last :arglists first)]
|
||||||
(doseq [[atype path-code] extensions]
|
(doseq [[atype path-code] extensions]
|
||||||
(extend atype protpath-prot
|
(extend atype protpath-prot
|
||||||
{m (eval `(fn ~params (path ~path-code)))}))))
|
{m (binding [*compile-files* false]
|
||||||
|
(eval `(fn ~params (path ~path-code))))}))))
|
||||||
|
|
||||||
(defmacro extend-protocolpath
|
(defmacro extend-protocolpath
|
||||||
"Used in conjunction with `defprotocolpath`. See [[defprotocolpath]]."
|
"Used in conjunction with `defprotocolpath`. See [[defprotocolpath]]."
|
||||||
|
|
|
||||||
|
|
@ -908,6 +908,8 @@
|
||||||
(if (fn? e) (re-find #" .*" (pr-str e)) e))
|
(if (fn? e) (re-find #" .*" (pr-str e)) e))
|
||||||
o)))
|
o)))
|
||||||
|
|
||||||
|
(def ^:dynamic *path-compile-files* false)
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(defn mk-dynamic-path-maker [resolved-code ns-str used-locals-list possible-param]
|
(defn mk-dynamic-path-maker [resolved-code ns-str used-locals-list possible-param]
|
||||||
(let [code `(fn [~@used-locals-list] ~resolved-code)
|
(let [code `(fn [~@used-locals-list] ~resolved-code)
|
||||||
|
|
@ -916,7 +918,11 @@
|
||||||
(println "Produced code:")
|
(println "Produced code:")
|
||||||
(pp/pprint code)
|
(pp/pprint code)
|
||||||
(println))
|
(println))
|
||||||
(binding [*ns* ns] (eval+ code))))
|
(binding [*ns* ns
|
||||||
|
*compile-files* (if *path-compile-files*
|
||||||
|
*compile-files*
|
||||||
|
false)]
|
||||||
|
(eval+ code))))
|
||||||
|
|
||||||
:cljs
|
:cljs
|
||||||
(defn mk-dynamic-path-maker [resolved-code ns-str used-locals-list possible-params]
|
(defn mk-dynamic-path-maker [resolved-code ns-str used-locals-list possible-params]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue