- ,@(when (or (member :construct flags)
- (member :construct-only flags)
- (member :writable flags))
- (list :initarg (intern (string slot-name) "KEYWORD")))
- ,@(cond
- ((find :initarg args) (list :initarg (getf args :initarg))))
+ ,@(if (find :initarg args)
+ (let ((initarg (getf args :initarg)))
+ (etypecase initarg
+ (null ())
+ (symbol `(:initarg ,initarg))))
+ (when (or (member :construct flags)
+ (member :construct-only flags)
+ (member :writable flags))
+ (list :initarg (intern (string slot-name) "KEYWORD"))))