~ chicken-core (chicken-5) 6bbc7c18c1ee16b546017318bd4435c5c30e5b19
commit 6bbc7c18c1ee16b546017318bd4435c5c30e5b19 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Jan 16 18:06:03 2024 +0100 Commit: Peter Bex <peter@more-magic.net> CommitDate: Wed Jan 17 08:00:20 2024 +0100 compile-syntax may not change ##sys#override status, as original value definition still applies Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/core.scm b/core.scm index 8f6b85bc..2e2fa3ed 100644 --- a/core.scm +++ b/core.scm @@ -796,14 +796,14 @@ vars tmps) (##core#let () ,@body) ) ) e dest ldest h ln #f))) - + ((##core#with-forbidden-refs) (let* ((loc (caddr x)) (vars (map (lambda (v) (cons (resolve-variable v e dest ldest h outer-ln) loc)) (cadr x)))) - (fluid-let ((forbidden-refs + (fluid-let ((forbidden-refs (append vars forbidden-refs))) (walk (cadddr x) e dest ldest h ln #f)))) @@ -921,38 +921,37 @@ '(##core#undefined) ) e dest ldest h ln #f)) ) - ((##core#define-compiler-syntax) - (let* ((var (cadr x)) - (body (caddr x)) - (name (lookup var))) - (##sys#put/restore! name '##sys#override 'syntax) - (when body - (set! compiler-syntax - (alist-cons - name - (##sys#get name '##compiler#compiler-syntax) - compiler-syntax))) - (##sys#put! - name '##compiler#compiler-syntax - (and body - (##sys#cons - (##sys#ensure-transformer - (##sys#eval/meta body) - var) - (##sys#current-environment)))) - (walk - (if ##sys#enable-runtime-macros - `(##sys#put! - (##core#syntax ,name) - '##compiler#compiler-syntax - ,(and body - `(##sys#cons - (##sys#ensure-transformer - ,body - (##core#quote ,var)) - (##sys#current-environment)))) - '(##core#undefined) ) - e dest ldest h ln #f))) + ((##core#define-compiler-syntax) + (let* ((var (cadr x)) + (body (caddr x)) + (name (lookup var))) + (when body + (set! compiler-syntax + (alist-cons + name + (##sys#get name '##compiler#compiler-syntax) + compiler-syntax))) + (##sys#put! + name '##compiler#compiler-syntax + (and body + (##sys#cons + (##sys#ensure-transformer + (##sys#eval/meta body) + var) + (##sys#current-environment)))) + (walk + (if ##sys#enable-runtime-macros + `(##sys#put! + (##core#syntax ,name) + '##compiler#compiler-syntax + ,(and body + `(##sys#cons + (##sys#ensure-transformer + ,body + (##core#quote ,var)) + (##sys#current-environment)))) + '(##core#undefined) ) + e dest ldest h ln #f))) ((##core#let-compiler-syntax) (let ((bs (map @@ -2089,10 +2088,10 @@ (not (db-get db name 'global)) (not (db-get db name 'unknown)) (eq? '##core#lambda (node-class val)) - (not (llist-match? (third (node-parameters val)) + (not (llist-match? (third (node-parameters val)) (cdr subs)))) (quit-compiling - "known procedure called with wrong number of arguments: `~A'" + "known procedure called with wrong number of arguments: `~A'" (real-name name))) (collect! db name 'call-sites (cons here n)))) (walk (first subs) env localenv fullenv here) @@ -2709,8 +2708,8 @@ boxedaliases) )) (if (null? aliases) body - (make-node 'let (list (car aliases)) - (list (car values) + (make-node 'let (list (car aliases)) + (list (car values) (loop (cdr aliases) (cdr values)))))) body) ) ) ) (let ((cvars (map (lambda (v) (ref-var (varnode v) here closure))Trap