mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Fix bound-identifier=? to compare binding names, not just symbolic names.
Fixes <http://bugs.gnu.org/16158>. * module/ice-9/psyntax.scm (bound-id=?): Use 'id-var-name' to compare binding names (gensyms), not just symbolic names. * module/ice-9/psyntax-pp.scm: Regenerate. * test-suite/tests/syntax.test: Add test.
This commit is contained in:
parent
032a16fced
commit
70c74b8476
3 changed files with 7 additions and 0 deletions
|
@ -484,6 +484,7 @@
|
|||
(lambda (i j)
|
||||
(if (and (syntax-object? i) (syntax-object? j))
|
||||
(and (eq? (syntax-object-expression i) (syntax-object-expression j))
|
||||
(eq? (id-var-name i '(())) (id-var-name j '(())))
|
||||
(same-marks?
|
||||
(car (syntax-object-wrap i))
|
||||
(car (syntax-object-wrap j))))
|
||||
|
|
|
@ -885,6 +885,7 @@
|
|||
(if (and (syntax-object? i) (syntax-object? j))
|
||||
(and (eq? (syntax-object-expression i)
|
||||
(syntax-object-expression j))
|
||||
(eq? (id-var-name i empty-wrap) (id-var-name j empty-wrap))
|
||||
(same-marks? (wrap-marks (syntax-object-wrap i))
|
||||
(wrap-marks (syntax-object-wrap j))))
|
||||
(eq? i j))))
|
||||
|
|
|
@ -1172,6 +1172,11 @@
|
|||
(r 'outer))
|
||||
#t)))
|
||||
|
||||
(pass-if "bound-identifier=?"
|
||||
(let* ((x 1) (s1 #'x)
|
||||
(x 2) (s2 #'x))
|
||||
(not (bound-identifier=? s1 s2))))
|
||||
|
||||
(with-test-prefix "syntax-case"
|
||||
|
||||
(pass-if-syntax-error "duplicate pattern variable"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue