(print-unreadable-object (,inst-var ,streamvar :type t)
(format stream "~@<~@{~S ~@_~S~^ ~_~}~:>"
,@(mappend #'list keys args)))
- (progn ,@body))))
+ (block ,code ,@body))))
,@(and export `((export '(,class-name ,constructor-name
,@(mapcar (lambda (arg)
(symbolicate 'inst- arg))
During BODY, VAR will be marked in-use; when BODY ends, VAR will be marked
available for re-use."
- `(let ((,var (temporary-var ,codegen ,type)))
- (unwind-protect
- (progn ,@body)
- (setf (var-in-use-p ,var) nil))))
+ (multiple-value-bind (doc decls body) (parse-body body :docp nil)
+ (declare (ignore doc))
+ `(let ((,var (temporary-var ,codegen ,type)))
+ ,@decls
+ (unwind-protect
+ (progn ,@body)
+ (setf (var-in-use-p ,var) nil)))))
;;;--------------------------------------------------------------------------
;;; Code generation idioms.