File tree Expand file tree Collapse file tree 3 files changed +16
-4
lines changed Expand file tree Collapse file tree 3 files changed +16
-4
lines changed Original file line number Diff line number Diff line change 35
35
(def ^:dynamic *analyze-deps* true )
36
36
(def ^:dynamic *load-tests* true )
37
37
(def ^:dynamic *load-macros* true )
38
+ (def ^:dynamic *reload-macros* false )
38
39
(def ^:dynamic *macro-infer* true )
39
40
40
41
(def ^:dynamic *file-defs* nil )
1520
1521
(load-core )
1521
1522
(doseq [nsym (vals use-macros)]
1522
1523
(let [k (or (:use-macros @reload)
1523
- (get-in @reloads [:use-macros nsym]))]
1524
+ (get-in @reloads [:use-macros nsym])
1525
+ (and (= nsym name) *reload-macros* :reload ))]
1524
1526
(if k
1525
1527
(clojure.core/require nsym k)
1526
1528
(clojure.core/require nsym))
1527
1529
(intern-macros nsym k)))
1528
1530
(doseq [nsym (vals require-macros)]
1529
1531
(let [k (or (:require-macros @reload)
1530
- (get-in @reloads [:require-macros nsym]))]
1532
+ (get-in @reloads [:require-macros nsym])
1533
+ (and (= nsym name) *reload-macros* :reload ))]
1531
1534
(if k
1532
1535
(clojure.core/require nsym k)
1533
1536
(clojure.core/require nsym))
Original file line number Diff line number Diff line change 8
8
9
9
(ns cljs.analyzer.api
10
10
(:refer-clojure :exclude [all-ns ns-interns ns-resolve resolve find-ns
11
- ns-publics])
11
+ ns-publics remove-ns ])
12
12
(:require [cljs.env :as env]
13
13
[cljs.analyzer :as ana]))
14
14
63
63
{:pre [(symbol? ns ) (symbol? sym)]}
64
64
(get-in @env/*compiler* [::ana/namespaces ns :defs sym]))
65
65
66
+ (defn remove-ns
67
+ " Removes the namespace named by the symbol."
68
+ [ns ]
69
+ {:pre [(symbol? ns )]}
70
+ (swap! env/*compiler* update-in [::ana/namespaces ] dissoc ns ))
71
+
66
72
(defmacro in-cljs-user
67
73
" Binds cljs.analyzer/*cljs-ns* to 'cljs.user and uses the given compilation
68
74
environment atom and runs body."
Original file line number Diff line number Diff line change 503
503
(slurp src)))
504
504
; ; need to load dependencies first
505
505
(load-dependencies repl-env (:requires compiled) opts)
506
+ ; ; remove the ns to get :reload semantics
507
+ (ana-api/remove-ns (:ns (ana/parse-ns src)))
506
508
; ; make sure it's been analyzed, this is because if it's already compiled
507
509
; ; cljs.compiler/compile-file won't do anything, good for builds,
508
510
; ; but a bit annoying here
509
- (ana/analyze-file src opts)
511
+ (binding [ana/*reload-macros* true ]
512
+ (ana/analyze-file src opts))
510
513
(-evaluate repl-env f 1 (cljsc/add-dep-string opts compiled))
511
514
(-evaluate repl-env f 1
512
515
(cljsc/src-file->goog-require src {:wrap true :reload true })))
You can’t perform that action at this time.
0 commit comments