weavejester / cljfmt

A tool for formatting Clojure code
Eclipse Public License 1.0
1.11k stars 120 forks source link

reformat-form throws when a local variable is named "ns" #247

Closed mainej closed 2 years ago

mainej commented 2 years ago

Trying to call reformat-form when a local variable is named ns throws an Exception

(let [ns (range 10)]
  (reduce + ns
          ))
Exception

                                         cljfmt.core/reformat-form                          core.cljc:  416
                                              cljfmt.core/reindent                          core.cljc:  379
                                                cljfmt.core/indent                          core.cljc:  346
                                                               ...
                                             cljfmt.core/transform                          core.cljc:   33
                                             cljfmt.core/transform                          core.cljc:   34
                                                clojure.core/apply                           core.clj:  669
                                                               ...
                                              cljfmt.core/edit-all                          core.cljc:   30
                                             cljfmt.core/indent/fn                          core.cljc:  347
                                           cljfmt.core/indent-line                          core.cljc:  331
                                         cljfmt.core/indent-amount                          core.cljc:  326
                                         cljfmt.core/custom-indent                          core.cljc:  318
                                          clojure.core/some-fn/spn                           core.clj: 7536
                                                 clojure.core/some                           core.clj: 2718
                                       clojure.core/some-fn/spn/fn                           core.clj: 7538
                                          clojure.core/some-fn/sp1                           core.clj: 7513
                                                 cljfmt.core/fn/fn                          core.cljc:  298
                                          cljfmt.core/inner-indent                          core.cljc:  261
                                cljfmt.core/fully-qualified-symbol                          core.cljc:  256
                             cljfmt.core/qualify-symbol-by-ns-name                          core.cljc:  250
                                                 clojure.core/name                           core.clj: 1610
java.lang.ClassCastException: class clojure.lang.PersistentList cannot be cast to class clojure.lang.Named (clojure.lang.PersistentList and clojure.lang.Named are in unnamed module of loader 'app')

I would expect it to reformat the same as it does when the local variable is named something else:

(let [ms (range 10)]
  (reduce + ms
          ))

;; becomes

(let [ms (range 10)]
  (reduce + ms))