;;;----- Licensing notice ---------------------------------------------------
;;;
-;;; This file is part of the Sensble Object Design, an object system for C.
+;;; This file is part of the Sensible Object Design, an object system for C.
;;;
;;; SOD is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
if you wanted to circumvent the cleanup then you should have used
`with-parser-place', which does all of this in the meta-level."
(once-only (scanner)
- `(let ((,place (scanner-capture-place ,scanner)))
- (unwind-protect (progn ,@body)
- (scanner-release-place ,scanner ,place)))))
+ (multiple-value-bind (docs decls body) (parse-body body :docp nil)
+ (declare (ignore docs))
+ `(let ((,place (scanner-capture-place ,scanner)))
+ ,@decls
+ (unwind-protect (progn ,@body)
+ (when ,place (scanner-release-place ,scanner ,place)))))))
;;;--------------------------------------------------------------------------
;;; Character scanner protocol.