Skip to content

Commit 7d0bfa0

Browse files
committed
Restore tools.nrepl compatibility
1 parent c873a5e commit 7d0bfa0

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

.clj-kondo/config.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
;; `nrepl.core/code` can contain intentionally broken code in the test suite, so we silence related resolution errors:
22
{:lint-as {nrepl.core/code clojure.core/quote}
3-
:linters {:unresolved-symbol {:exclude [(refactor-nrepl.ns.ns-parser/with-libspecs-from [libspecs])]}
3+
:linters {:unresolved-symbol {:exclude [(refactor-nrepl.ns.ns-parser/with-libspecs-from [libspecs])
4+
(refactor-nrepl.middleware/set-descriptor! [set-descriptor!])]}
45
:unresolved-namespace {:exclude [clojure.main]}}}

src/refactor_nrepl/middleware.clj

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,27 @@
55
[refactor-nrepl.core :as core]
66
[refactor-nrepl.ns.libspecs :refer [namespace-aliases]]
77
[refactor-nrepl.stubs-for-interface :refer [stubs-for-interface]]
8-
[clojure.walk :as walk]
9-
[nrepl.middleware :refer [set-descriptor!]]
10-
[nrepl.misc :refer [response-for]]
11-
[nrepl.transport :as transport]))
8+
[clojure.walk :as walk]))
9+
10+
;; Compatibility with the legacy tools.nrepl.
11+
;; It is not recommended to use the legacy tools.nrepl,
12+
;; therefore it is guarded with a system property.
13+
;; Specifically, we don't want to require it by chance.
14+
(when-not (resolve 'set-descriptor!)
15+
(if (and (System/getProperty "refactor-nrepl.internal.try-requiring-tools-nrepl")
16+
(try
17+
(require 'clojure.tools.nrepl)
18+
true
19+
(catch Exception _
20+
false)))
21+
(require
22+
'[clojure.tools.nrepl.middleware :refer [set-descriptor!]]
23+
'[clojure.tools.nrepl.misc :refer [response-for]]
24+
'[clojure.tools.nrepl.transport :as transport])
25+
(require
26+
'[nrepl.middleware :refer [set-descriptor!]]
27+
'[nrepl.misc :refer [response-for]]
28+
'[nrepl.transport :as transport])))
1229

1330
(defn- require-and-resolve [sym]
1431
(locking core/require-lock

0 commit comments

Comments
 (0)