File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 145145 (assoc ret :reload true )
146146 (cons fst-opt rst-opts))
147147 :refer (recur (assoc ret :refer fst-opt)
148- rst-opts)))))
148+ rst-opts)
149+ :rename (recur (assoc ret :rename fst-opt)
150+ rst-opts)))))
149151 (symbol? libspec) {:lib-name libspec}
150152 :else (throw (new #?(:clj Exception :cljs js/Error)
151153 (str " Invalid libspec: " libspec)))))
152154
153155(declare eval-string* )
154156
155157(defn handle-require-libspec-env
156- [env current-ns the-loaded-ns lib-name {:keys [:as :refer ] :as _parsed-libspec}]
158+ [env current-ns the-loaded-ns lib-name
159+ {:keys [:as :refer :rename ] :as _parsed-libspec}]
157160 (let [the-current-ns (get-in env [:namespaces current-ns]) ; ; = ns-data?
158161 the-current-ns (if as (assoc-in the-current-ns [:aliases as] lib-name)
159162 the-current-ns)
163+ rename-sym (if rename (fn [sym] (or (rename sym) sym))
164+ identity)
160165 the-current-ns
161166 (if refer
162167 (cond (kw-identical? :all refer)
163168 (reduce (fn [ns [k v]]
164169 (if (symbol? k)
165- (assoc ns k v)
170+ (assoc ns ( rename-sym k) v)
166171 ns ))
167172 the-current-ns
168173 the-loaded-ns)
169174 (sequential? refer)
170175 (reduce (fn [ns sym]
171- (assoc ns sym
176+ (assoc ns ( rename- sym sym)
172177 (if-let [[_k v] (find the-loaded-ns sym)]
173178 v
174179 (throw (new #?(:clj Exception :cljs js/Error)
Original file line number Diff line number Diff line change 494494(require (symbol \" foo\" ) (symbol \" bar\" ))
495495[foo/x bar/x x]" ))))
496496 (testing " require as function"
497- (is (= 1 (eval* " (ns foo) (defn foo [] 1) (ns bar) (apply require ['[foo :as f]]) (f/foo)" )))))
497+ (is (= 1 (eval* " (ns foo) (defn foo [] 1) (ns bar) (apply require ['[foo :as f]]) (f/foo)" ))))
498+ (testing " rename"
499+ (is (= #{1 2 } (eval* " (require '[clojure.set :refer [union] :rename {union union2}]) (union2 #{1} #{2})" )))))
498500
499501(deftest misc-namespace-test
500502 (is (= 1 (eval* " (alias (symbol \" c\" ) (symbol \" clojure.core\" )) (c/and true 1)" )))
You can’t perform that action at this time.
0 commit comments