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)
prints 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
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?