[Git][cmucl/cmucl][master] Check for function names correctly
Raymond Toy
rtoy at common-lisp.net
Wed Jun 24 04:50:15 UTC 2015
Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
89074ab3 by Raymond Toy at 2015-06-24T06:50:04Z
Check for function names correctly
Fix #7
The change to use extended names like (flet frob) broke the detection
of local names for get-setf-expansion. Fix it. This reverts behavior
back to what 18a used to do.
A test for this is also added.
- - - - -
2 changed files:
- src/code/macros.lisp
- tests/issues.lisp
Changes:
=====================================
src/code/macros.lisp
=====================================
--- a/src/code/macros.lisp
+++ b/src/code/macros.lisp
@@ -667,7 +667,7 @@
((and environment
(let ((name (car form)))
(dolist (x (c::lexenv-functions environment) nil)
- (when (and (eq (car x) name)
+ (when (and (eq (nth-value 1 (valid-function-name-p (car x))) name)
(not (c::defined-function-p (cdr x))))
(return t)))))
(expand-or-get-setf-inverse form environment))
=====================================
tests/issues.lisp
=====================================
--- a/tests/issues.lisp
+++ b/tests/issues.lisp
@@ -73,4 +73,23 @@
(assert-prints "SQUARE compiler macro present: No.
8"
- (test/present)))
\ No newline at end of file
+ (test/present)))
+
+(defmacro xpop (place &environment env)
+ (multiple-value-bind (dummies vals new setter getter)
+ (get-setf-expansion place env)
+ `(let* (,@(mapcar #'list dummies vals) (,(car new) ,getter))
+ (if ,(cdr new) (error "Can't expand this."))
+ (prog1 (car ,(car new))
+ (setq ,(car new) (cdr ,(car new)))
+ ,setter))))
+
+(defsetf frob (x) (value)
+ `(setf (car ,x) ,value))
+
+(define-test issue.7
+ (:tag :issues)
+ (assert-error 'error
+ (let ((z (list 1 2)))
+ (flet ((frob (x) (cdr x)))
+ (xpop (frob z))))))
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/89074ab386b5ce7d2283261949b120e9a6713dfd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20150624/dfa3ae69/attachment.html>
More information about the cmucl-cvs
mailing list