AFAIK a tag is resolved from the global environment, not local scope. For example this works fine even though we shadow Class with a local.
(let [Class nil] ((fn [^Class a] (.getName a)) Integer))
(resolve {'Class true} 'Class) ;; emulating Schema's tag inference
;=> nil
(resolve 'Class) ;; what I suspect is more correct
;=> java.lang.Class
Relevant line:
|
(let [resolved (delay (resolve env tag))] |