Fork me on GitHub

If this is considered a bug in Clojure's primitive vector implementation, it seems like perhaps a harmless one, but thought I would ask anyway in case I learn something new. See thread for details.


There is a print-method in gvec.clj with a dispatch value of ::Vec, whereas I would have expected the dispatch value to be the class clojure.core.Vec:


It seems that this print-method is not called for Clojure primitive vectors, at least not normally:

user=> (= (get-method print-method [1 2 3])
   (get-method print-method (vector-of :byte 1 2 3)))



Given the definition of the multimethod print-method's dispatch function, it seems like that print-method in gvec.clj would get called for any object that had metadata with a :type key whose value was :clojure.core.Vec , but I can't think of any reason why that would happen unless someone went out of their way to arrange it.


I suspect that this is intentional for reasons I haven't figured out, or it is a bug that no one has noticed because calling print-method on a clojure.core.Vec will already call the same method as for regular Clojure vectors, and that is what the print-method definition in gvec.clj appears to be trying to do, anyway, if it were used.


dunno, feel free to file a jira