Ticket #57: extlambda.diff
File extlambda.diff, 1.8 KB (added by , 15 years ago) |
---|
-
tests/module-tests.scm
145 145 (begin0 1 2 3)) 146 146 1) 147 147 148 (module m14 (test-extlambda) 149 (import chicken scheme) 150 (define (test-extlambda string #!optional whatever) 151 string)) 152 153 (import m14) 154 155 (test-equal "extended lambda list uses expansion environment" 156 "some text" 157 (test-extlambda "some text")) 158 148 159 (test-end "modules") -
expand.scm
484 484 (loop 3 req opt '() r) 485 485 (err "`#!key' argument marker in wrong context") ) ] 486 486 [else 487 (cond [(symbol? x)487 (cond [(symbol? var) 488 488 (case mode 489 [(0) (loop 0 (cons xreq) '() '() r)]490 [(1) (loop 1 req (cons (list x#f) opt) '() r)]489 [(0) (loop 0 (cons var req) '() '() r)] 490 [(1) (loop 1 req (cons (list var #f) opt) '() r)] 491 491 [(2) (err "invalid lambda list syntax after `#!rest' marker")] 492 [else (loop 3 req opt (cons (list x) key) r)] ) ]493 [(and (list? x) (eq? 2 (length x)))492 [else (loop 3 req opt (cons (list var) key) r)] ) ] 493 [(and (list? var) (eq? 2 (length var))) 494 494 (case mode 495 495 [(0) (err "invalid required argument syntax")] 496 [(1) (loop 1 req (cons xopt) '() r)]496 [(1) (loop 1 req (cons var opt) '() r)] 497 497 [(2) (err "invalid lambda list syntax after `#!rest' marker")] 498 [else (loop 3 req opt (cons xkey) r)] ) ]498 [else (loop 3 req opt (cons var key) r)] ) ] 499 499 [else (err "invalid lambda list syntax")] ) ] ) ) ] ) ) ) ) ) ) 500 500 501 501