- (let ((lexenv (sb-kernel::coerce-to-lexenv env)))
- (sb-c::make-lexenv
- :default lexenv
- :funs (append (mapcar (lambda (f)
- (cons (car f)
- (sb-c::make-functional :lexenv lexenv)))
- funs)
- (mapcar (lambda (m)
- (list* (car m)
- 'sb-c::macro
- (if (eq (car m)
- *key-to-walker-environment*)
- (walker-info-to-bogo-fun (cadr m))
- (coerce (cadr m) 'function))))
- macros)))))
+ (let ((lexenv (sb!kernel::coerce-to-lexenv env)))
+ (sb!c::make-lexenv
+ :default lexenv
+ :vars (when (eql (caar macros) *key-to-walker-environment*)
+ (copy-tree (remove :lexical-var (fourth (cadar macros))
+ :key #'cadr)))
+ :funs (append (mapcar (lambda (f)
+ (cons (car f)
+ (sb!c::make-functional :lexenv lexenv)))
+ funs)
+ (mapcar (lambda (m)
+ (list* (car m)
+ 'sb!c::macro
+ (if (eq (car m)
+ *key-to-walker-environment*)
+ (walker-info-to-bogo-fun (cadr m))
+ (coerce (cadr m) 'function))))
+ macros)))))