deftypes with fields whose names get munged fail when constructed in data reader functions.
Cause: To embed deftypes in the bytecode the compiler emits the value of each field, then emits a call to the deftypes underlying class's constructor. To get a list of fields the compiler calls .getBasis. The getBasis fields are the "clojure" level field names of the deftype, which the actual "jvm" level field names have been munged (replacing - with _, etc), so the compiler tries to generate code to set values on non-existent fields.
Approach: Munge the field name before emitting it in bytecode.
Screened by: Alex Miller