set! of a deftype field using field-access syntax causes ClassCastException

Description

set! can be used to set a public field on an instance with (set! (.field inst) val). This does not work inside a protocol function defined on a deftype with a mutable field for an instance of that type itself.

Cause: The type assigned in the bytecode at this point is the compile_stub type, not the expected class type.

Approach: Use getType(targetClass) instead of Type.getType(targetClass)

Patch: 0001-CLJ-1226-fix-set-of-instance-field-expression-that-r-v2.patch
Screened by: Fogus

Environment

None

Assignee

Unassigned

Reporter

Nicola Mometto

Approval

Ok

Patch

Code and Test

Fix versions

Affects versions

Priority

Major
Configure