mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-20 14:19:18 +02:00
adding unhygiene tests
This commit is contained in:
parent
90280258d0
commit
60a435825d
4 changed files with 45 additions and 0 deletions
|
@ -2,3 +2,4 @@
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
4
|
4
|
||||||
|
5
|
||||||
|
|
|
@ -10,3 +10,16 @@
|
||||||
(write (or #f tmp))
|
(write (or #f tmp))
|
||||||
(newline))
|
(newline))
|
||||||
|
|
||||||
|
(write
|
||||||
|
(letrec-syntax
|
||||||
|
((myor
|
||||||
|
(er-macro-transformer
|
||||||
|
(lambda (expr rename compare)
|
||||||
|
(if (null? (cdr expr))
|
||||||
|
#f
|
||||||
|
(list (rename 'let) (list (list (rename 'tmp) (cadr expr)))
|
||||||
|
(list (rename 'if) (rename 'tmp)
|
||||||
|
(rename 'tmp)
|
||||||
|
(cons (rename 'myor) (cddr expr)))))))))
|
||||||
|
(let ((tmp 5)) (myor #f tmp))))
|
||||||
|
(newline)
|
||||||
|
|
4
tests/basic/test10-unhygiene.res
Normal file
4
tests/basic/test10-unhygiene.res
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
6
|
27
tests/basic/test10-unhygiene.scm
Normal file
27
tests/basic/test10-unhygiene.scm
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
(define-syntax aif
|
||||||
|
(sc-macro-transformer
|
||||||
|
(lambda (form environment)
|
||||||
|
(let ((condition
|
||||||
|
(make-syntactic-closure environment '() (cadr form)))
|
||||||
|
(consequent
|
||||||
|
(make-syntactic-closure environment '(it) (caddr form)))
|
||||||
|
(alternative
|
||||||
|
(make-syntactic-closure environment '() (cadddr form))))
|
||||||
|
`(let ((it ,condition))
|
||||||
|
(if it
|
||||||
|
,consequent
|
||||||
|
,alternative))))))
|
||||||
|
|
||||||
|
(write (aif 1 it 3))
|
||||||
|
(newline)
|
||||||
|
|
||||||
|
(write (let ((it 4)) (aif 1 it 3)))
|
||||||
|
(newline)
|
||||||
|
|
||||||
|
(write (let ((it 4)) (aif (let ((it 5)) 1) it 3)))
|
||||||
|
(newline)
|
||||||
|
|
||||||
|
(write (let ((it 4)) (aif (let ((it 5)) 1) (let ((it 6)) it) 3)))
|
||||||
|
(newline)
|
||||||
|
|
Loading…
Add table
Reference in a new issue