Changeset 15828 in project for chicken


Ignore:
Timestamp:
09/11/09 16:13:46 (10 years ago)
Author:
felix
Message:

handle case where proc in for-each/map is macro name

Location:
chicken/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • chicken/trunk/compiler-syntax.scm

    r15817 r15828  
    7676                  (,%if (,%and ,@(map (lambda (v) `(,%pair? ,v)) vars))
    7777                        (,%begin
    78                          (,(cadr x)
     78                         ((,%begin ,(cadr x))
    7979                          ,@(map (lambda (v) `(##sys#slot ,v 0)) vars))
    8080                         (##core#app
     
    9494        (%node (r 'node))
    9595        (%quote (r 'quote))
     96        (%begin (r 'begin))
    9697        (%lambda (r 'lambda))
    9798        (%and (r 'and))
     
    110111                             (,%let ((,%res
    111112                                      (,%cons
    112                                        (,(cadr x)
     113                                       ((,%begin ,(cadr x))
    113114                                        ,@(map (lambda (v) `(##sys#slot ,v 0)) vars))
    114115                                       (,%quote ()))))
  • chicken/trunk/tests/compiler-tests-2.scm

    r15817 r15828  
    4141  (map (lambda (x) (print* ":" x)) '(1 2 3))
    4242  (newline))
     43
     44(let ((x #f))
     45  (define (f1 x) (print* x " "))
     46  (let-syntax ((f1 (syntax-rules ()
     47                     ((_ y)
     48                      (begin
     49                        (assert (not x))
     50                        (set! x #t)
     51                        f1)))))
     52    (for-each f1 '(1 2 3))))
Note: See TracChangeset for help on using the changeset viewer.