clojure-emacs / refactor-nrepl

nREPL middleware to support refactorings in an editor agnostic way
Eclipse Public License 1.0
256 stars 69 forks source link

Keyword literals referring to a namespace required with :as-alias break cljr-clean-ns in cljc #378

Closed DerGuteMoritz closed 2 years ago

DerGuteMoritz commented 2 years ago

Expected behavior

When invoking cljr-clean-ns on a cljc namespace which contains an unused require as well as a keyword literal referring to a namespace which is only required with :as-alias like so:

(ns some-ns
  (:require [foo :as-alias f]
            [unused :as-alias clean-me-up]))

(def bar ::f/bar)

The unused namespace should be removed.

Actual behavior

The ns form remains untouched and the following error is logged:

cljr--maybe-rethrow-error: clojure.lang.ExceptionInfo: [line 3, col 17] Invalid keyword: ::f/bar. {:type :reader-exception, :ex-kind :reader-error, :file "[...]/src/some_ns.cljc", :line 3, :col 17}

Steps to reproduce the problem

See above.

Environment & Version information

clj-refactor.el version information

clj-refactor 3.4.2, refactor-nrepl 3.4.1

CIDER version information

CIDER 1.3.0 (Ukraine), nREPL 0.9.0 Clojure 1.11.0-rc1, Java 11.0.12

Clojure CLI version

1.10.3.1029

Emacs version

GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.31, cairo version 1.16.0)

Operating system

NixOS on nixpkgs rev 3e644bd62489b516292c816f70bf0052c693b3c7

vemv commented 2 years ago

clj-refactor and refactor-nrepl latest (for both: 3.5.1) gracefully handle :as-alias and should clean it only when due.

Would be happy if you can give it a spin an confirm that's the case.

Cheers - V

DerGuteMoritz commented 2 years ago

clj-refactor and refactor-nrepl latest (for both: 3.5.1) gracefully handle :as-alias and should clean it only when due.

Yep, that's fixed now, thanks :tada: However that would be https://github.com/clojure-emacs/clj-refactor.el/issues/516 - the issue described in this ticket here still exists. Note that this only affects cljc files!

DerGuteMoritz commented 2 years ago

Oh yeah and I'm using it with a clojure-cli REPL if that matters.

vemv commented 2 years ago

Fixed in clj-refactor and refactor-nrepl latest (for both: 3.5.2)

Thanks for your collaboration! 🍻

DerGuteMoritz commented 2 years ago

Confirmed, works like a charm now :raised_hands: Thanks a lot for your help!!