Skip to content

Commit dfa2f07

Browse files
authored
undef-all: skip unmapping of default imports (#751)
1 parent 5c0f211 commit dfa2f07

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44

55
## 0.28.3 (2022-02-22)
66

7+
### Bugs Fixed
8+
9+
* [#751](https://github.com/clojure-emacs/cider-nrepl/issues/751): Skip unmapping of default imports in `undef-all` op.
10+
11+
### Changes
12+
713
* Upgrade [Orchard to version 0.9.2](https://github.com/clojure-emacs/orchard/blob/v0.9.2/CHANGELOG.md#092-2022-02-22).
814

915
## 0.28.2 (2022-02-01)

src/cider/nrepl/middleware/undef.clj

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@
3131
"Undefines all symbol mappings and aliases in the namespace."
3232
[{:keys [ns]}]
3333
(let [ns (misc/as-sym ns)]
34-
(doseq [[sym _] (ns-map ns)]
35-
(ns-unmap ns sym))
34+
;; Do not remove the default java.lang imports, as they are not relinked on the next load
35+
;; see https://github.com/clojure-emacs/cider/issues/3194
36+
(doseq [[sym ref] (ns-map ns)]
37+
(when-not (identical? ref (get clojure.lang.RT/DEFAULT_IMPORTS sym))
38+
(ns-unmap ns sym)))
3639
(doseq [[sym _] (ns-aliases ns)]
3740
(ns-unalias ns sym))
3841
ns))

test/clj/cider/nrepl/middleware/undef_test.clj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
(is (:ex response)))))
104104

105105
(deftest undef-all-test
106-
(testing "undef-all undefines all vars in namespace"
106+
(testing "undef-all undefines all vars in namespace, except default imports"
107107
(is (= #{"done"}
108108
(:status (session/message {:op "eval"
109109
:code "(do (ns other.ns (:require [clojure.walk :as walk :refer [postwalk]])))"}))))
@@ -113,6 +113,9 @@
113113
(is (= ["#'clojure.walk/postwalk"]
114114
(:value (session/message {:op "eval"
115115
:code "(ns-resolve 'other.ns 'postwalk)"}))))
116+
(is (= ["java.lang.System"]
117+
(:value (session/message {:op "eval"
118+
:code "(ns-resolve 'other.ns 'System)"}))))
116119
(is (= #{"done"}
117120
(:status (session/message {:op "undef-all"
118121
:ns "other.ns"}))))
@@ -122,6 +125,9 @@
122125
(is (= ["nil"]
123126
(:value (session/message {:op "eval"
124127
:code "(ns-resolve 'other.ns 'postwalk)"}))))
128+
(is (= ["java.lang.System"]
129+
(:value (session/message {:op "eval"
130+
:code "(ns-resolve 'other.ns 'System)"}))))
125131
(is (= ["{}"]
126132
(:value (session/message {:op "eval"
127133
:code "(ns-aliases 'other.ns)"}))))))

0 commit comments

Comments
 (0)