Ticket #575: dsssl-check.patch

File dsssl-check.patch, 1.1 KB (added by sjamaan, 13 years ago)

Add check for symbol-ness

  • expand.scm

    diff --git a/expand.scm b/expand.scm
    index 150445d..fecf0c5 100644
    a b  
    386386                               [(1) (loop 1 req (cons (list var #f) opt) '() r)]
    387387                               [(2) (err "invalid lambda list syntax after `#!rest' marker")]
    388388                               [else (loop 3 req opt (cons (list var) key) r)] ) ]
    389                             [(and (list? var) (eq? 2 (length var)))
     389                            [(and (list? var) (eq? 2 (length var)) (symbol? (car var)))
    390390                             (case mode
    391391                               [(0) (err "invalid required argument syntax")]
    392392                               [(1) (loop 1 req (cons var opt) '() r)]
  • tests/syntax-tests.scm

    diff --git a/tests/syntax-tests.scm b/tests/syntax-tests.scm
    index 4307f00..ca80ec8 100644
    a b  
    440440  (import scheme chicken)
    441441  ((lambda (#!key string) (assert (not string))))) ; refered to R5RS `string'
    442442
     443;;; Missing check for keyword and optional variable types in DSSSL llists
     444
     445(f (eval '(lambda (foo #!key (0 1)) x)))
     446(f (eval '(lambda (foo #!optional (0 1)) x)))
    443447
    444448;;; compiler didn't resolve expansion into local variable
    445449;;; (reported by Alex Shinn, #15)