missing field munging when recreating deftypes serialized into byte code

Description

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.
Patch: clj-1399-with-test.diff
Screened by: Alex Miller

Environment

None

Assignee

Unassigned

Reporter

Kevin Downey

Labels

Approval

Ok

Patch

Code and Test

Fix versions

Affects versions

Priority

Critical
Configure