i found an interesting issue in our codebase around some tagged-literals seemingly violating the principle of least surprise
we have been creating some pure-data descriptions of processes including some defrecord objects from a custom tagged-literal reader declared in data_readers.cljc, and having those defrecord objects participate in a protocol. it's all been working just fine until i ran across this issue
someone had put one of these tagged literals into a def (which seemed like a reasonable thing to do at first blush):
(def foo #ctx/event-path [:blah])
which was ok... until c.t.n.r/refresh was called, after which point everything broke
it turned out that the defrecord object foo had a stale class (presumably because the namespace dependencies induced by the tagged-literal parsers declared in data_readers.cljc are not recognised by tools.namespace, and namespaces were therefore recompiled out of order), and so no longer participated in the protocol
should tools.namespace be able to recognise data_readers.cljc induced dependencies ? or is that a step too far for it ?