joker 2019-05-28

it will still work when it can’t be resolved though, but you’re right, when it’s there, it is used:

user=> (defmacro foo [] `foo/includes?)
#'user/foo
user=> (macroexpand '(foo))
foo/includes?
user=> (require '[clojure.string :as foo])
nil
user=> (macroexpand '(foo))
foo/includes?
user=> (defmacro foo [] `foo/includes?)
#'user/foo
user=> (macroexpand '(foo))
clojure.string/includes?

syntax-quote (`) actually resolves the symbol, while regular quote doesn't

compare

(require '[joker.os :as os])
(println `os/t)

prints joker.os/t

(require '[joker.os :as os])
(println 'os/t)

that's why qualified symbols inside syntax-quote "use" required namespaces

so the former doesn't trigger "unused namespace" warning while the latter does