Each slot initializer is first used to initialize a temporary of the
correct type, which is then assigned to the slot's structure
member. (This was introduced in commit
1d8206e.) Unfortunately, the
temporary was declared naïvely, as `TYPE NAME', which works when TYPE
involves only declaration specifiers and pointer declarator operators,
but not otherwise.
Fix this, by using the `pprint-c-type' function like it was meant to be.
" struct ~A *sod__obj = ~A__imprint(p);~2%"
(ilayout-struct-tag class) class)
(setf used t))
" struct ~A *sod__obj = ~A__imprint(p);~2%"
(ilayout-struct-tag class) class)
(setf used t))
- (format stream " {~% ~A ~A ="
- (sod-slot-type dslot)
- *sod-tmp-val*)
+ (format stream " {~% ")
+ (pprint-c-type (sod-slot-type dslot) stream
+ *sod-tmp-val*)
+ (format stream " =")
(ecase (sod-initializer-value-kind init)
(:simple (write (sod-initializer-value-form init)
:stream stream
(ecase (sod-initializer-value-kind init)
(:simple (write (sod-initializer-value-form init)
:stream stream