clj-refactor.nvim icon indicating copy to clipboard operation
clj-refactor.nvim copied to clipboard

CCleanNS removes used dependencies

Open nimaai opened this issue 7 years ago • 2 comments

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

nimaai avatar Jul 16 '18 08:07 nimaai

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.

SevereOverfl0w avatar Jul 16 '18 08:07 SevereOverfl0w

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.

nimaai avatar Jul 16 '18 09:07 nimaai