diff --git a/src/eastwood/linters/misc.clj b/src/eastwood/linters/misc.clj index cba0aaed..80b8d6a5 100644 --- a/src/eastwood/linters/misc.clj +++ b/src/eastwood/linters/misc.clj @@ -867,14 +867,27 @@ ;; :require, as :refer can be used for that purpose ;; instead. :require (merge - {:as :symbol, :refer :symbol-list-or-all} + {:as :symbol, :refer :symbol-list-or-all, + :include-macros :true, :refer-macros :symbol-list} (if (contains? libspec-opts :refer) {:exclude :symbol-list, :rename :map-from-symbol-to-symbol} {})) + :require-macros (merge + {:as :symbol, :refer :symbol-list-or-all} + (if (contains? libspec-opts :refer) + {:exclude :symbol-list, + :rename :map-from-symbol-to-symbol} + {})) :use {:as :symbol :refer :symbol-list-or-all, :exclude :symbol-list, :rename :map-from-symbol-to-symbol, - :only :symbol-list}) + :only :symbol-list} + :use-macros {:as :symbol :refer :symbol-list-or-all, + :exclude :symbol-list, :rename :map-from-symbol-to-symbol, + :only :symbol-list} + :refer-clojure {:exclude :symbol-list, + :rename :map-from-symbol-to-symbol} + :import {}) bad-option-keys (set/difference (set options) (set (keys allowed-options))) libspec-opts (select-keys libspec-opts @@ -888,7 +901,8 @@ :symbol-list-or-all (or (= :all option-val) (symbol-list? option-val)) :map-from-symbol-to-symbol - (map-from-symbol-to-symbol? option-val))) + (map-from-symbol-to-symbol? option-val) + :true (= true option-val))) libspec-opts))] (concat (if (seq bad-option-keys) diff --git a/test/eastwood/test/linters_test.clj b/test/eastwood/test/linters_test.clj index b20b3583..256a106c 100644 --- a/test/eastwood/test/linters_test.clj +++ b/test/eastwood/test/linters_test.clj @@ -1718,12 +1718,12 @@ the next." :line 114, :column 3} 1, {:linter :wrong-ns-form, - :msg ":require has a libspec with wrong option keys: :only - option keys for :require should only include the following: :as :refer", + :msg ":require has a libspec with wrong option keys: :only - option keys for :require should only include the following: :as :include-macros :refer :refer-macros", :file (fname-from-parts "testcases" "wrongnsform.clj"), :line 150, :column 13} 1, {:linter :wrong-ns-form, - :msg ":require has a libspec with wrong option keys: :only - option keys for :require should only include the following: :as :exclude :refer :rename", + :msg ":require has a libspec with wrong option keys: :only - option keys for :require should only include the following: :as :exclude :include-macros :refer :refer-macros :rename", :file (fname-from-parts "testcases" "wrongnsform.clj"), :line 182, :column 13} 1,