CCleanNS removes used dependencies
Hi,
I think CCleanNS has a bug. When applied to the following test file:
(ns clean-ns.reproduce-issue
(:refer-clojure :exclude [str keyword])
(:require [leihs.procurement.utils.core :refer [keyword str presence]])
(:require
[bidi.bidi :as bidi]))
(defn wrap-resolve-handler
([handler] (fn [request] (wrap-resolve-handler handler request)))
([handler request]
(let [path (or (-> request
:path-info
presence)
(-> request
:uri
presence))
{route-params :route-params, handler-key :handler}
(bidi/match-pair paths {:remainder path, :route paths})
handler-fn (handler-resolver handler-key)]
(handler (assoc request
:route-params route-params
:handler-key handler-key
:handler handler-fn)))))
The result is:
(ns clean-ns.reproduce-issue
(:refer-clojure :exclude [str keyword])
(:require [leihs.procurement.utils.core :refer [presence]]))
(defn wrap-resolve-handler
([handler] (fn [request] (wrap-resolve-handler handler request)))
([handler request]
(let [path (or (-> request
:path-info
presence)
(-> request
:uri
presence))
{route-params :route-params, handler-key :handler}
(bidi/match-pair paths {:remainder path, :route paths})
handler-fn (handler-resolver handler-key)]
(handler (assoc request
:route-params route-params
:handler-key handler-key
:handler handler-fn)))))
[bidi.bidi :as bidi] was removed but is used in (bidi/match-pair paths {:remainder path, :route paths}).
I have observed this behaviour in several files and in several required dependencies.
Thanks, Matus
Does it only happen when there's multiple :require blocks? What does refactor.el do in the same case?
Are multiple :require common in your codebase? I've never encountered them.
Does it only happen when there's multiple :require blocks?
Yes, it seems so. I could confirm it with another file.
What does refactor.el do in the same case?
I don't know. I am not an emacs user. Could you try it?
Are multiple :require common in your codebase?
Yes, it seems. Without particular reason.