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 3535(def ^:dynamic *analyze-deps* true )
3636(def ^:dynamic *load-tests* true )
3737(def ^:dynamic *load-macros* true )
38+ (def ^:dynamic *reload-macros* false )
3839(def ^:dynamic *macro-infer* true )
3940
4041(def ^:dynamic *file-defs* nil )
15201521 (load-core )
15211522 (doseq [nsym (vals use-macros)]
15221523 (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 ))]
15241526 (if k
15251527 (clojure.core/require nsym k)
15261528 (clojure.core/require nsym))
15271529 (intern-macros nsym k)))
15281530 (doseq [nsym (vals require-macros)]
15291531 (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 ))]
15311534 (if k
15321535 (clojure.core/require nsym k)
15331536 (clojure.core/require nsym))
Original file line number Diff line number Diff line change 88
99(ns cljs.analyzer.api
1010 (:refer-clojure :exclude [all-ns ns-interns ns-resolve resolve find-ns
11- ns-publics])
11+ ns-publics remove-ns ])
1212 (:require [cljs.env :as env]
1313 [cljs.analyzer :as ana]))
1414
6363 {:pre [(symbol? ns ) (symbol? sym)]}
6464 (get-in @env/*compiler* [::ana/namespaces ns :defs sym]))
6565
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+
6672(defmacro in-cljs-user
6773 " Binds cljs.analyzer/*cljs-ns* to 'cljs.user and uses the given compilation
6874 environment atom and runs body."
Original file line number Diff line number Diff line change 503503 (slurp src)))
504504 ; ; need to load dependencies first
505505 (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)))
506508 ; ; make sure it's been analyzed, this is because if it's already compiled
507509 ; ; cljs.compiler/compile-file won't do anything, good for builds,
508510 ; ; but a bit annoying here
509- (ana/analyze-file src opts)
511+ (binding [ana/*reload-macros* true ]
512+ (ana/analyze-file src opts))
510513 (-evaluate repl-env f 1 (cljsc/add-dep-string opts compiled))
511514 (-evaluate repl-env f 1
512515 (cljsc/src-file->goog-require src {:wrap true :reload true })))
You can’t perform that action at this time.
0 commit comments