From 9bc49b0776106671dcf963a81cc43beb1d7d0bbc Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Mon, 5 Dec 1988 23:32:12 +0000 Subject: [PATCH] Add a list? check to syntax-expression and some paranoia to syntax-sequence. --- v7/src/runtime/syntax.scm | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/v7/src/runtime/syntax.scm b/v7/src/runtime/syntax.scm index 8f1e05a65..b2558ff4b 100644 --- a/v7/src/runtime/syntax.scm +++ b/v7/src/runtime/syntax.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/Attic/syntax.scm,v 14.6 1988/08/26 22:53:47 jrm Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/Attic/syntax.scm,v 14.7 1988/12/05 23:32:12 jinx Exp $ Copyright (c) 1988 Massachusetts Institute of Technology @@ -112,6 +112,8 @@ MIT in each case. |# (define (syntax-expression expression) (cond ((pair? expression) + (if (not (list? expression)) + (error "syntax-expression: not a valid expression" expression)) (let ((transform (syntax-table-ref *syntax-table* (car expression)))) (if transform (if (primitive-syntaxer? transform) @@ -183,17 +185,20 @@ MIT in each case. |# (cons (syntax-expression (car expressions)) (syntax-expressions (cdr expressions))))) -(define (syntax-sequence expressions) - (if (null? expressions) +(define (syntax-sequence original-expressions) + (if (null? original-expressions) (syntax-error "No subforms in sequence") (make-scode-sequence - (let loop ((expressions expressions)) - (if (null? expressions) - '() - ;; Force eval order. This is required so that special - ;; forms such as `define-syntax' work correctly. - (let ((first (syntax-expression (car expressions)))) - (cons first (loop (cdr expressions))))))))) + (let process ((expressions original-expressions)) + (cond ((pair? expressions) + ;; Force eval order. This is required so that special + ;; forms such as `define-syntax' work correctly. + (let ((first (syntax-expression (car expressions)))) + (cons first (process (cdr expressions))))) + ((null? expressions) + '()) + (else + (syntax-error "Bad sequence" original-expressions))))))) (define (syntax-bindings bindings receiver) (cond ((null? bindings) @@ -225,11 +230,11 @@ MIT in each case. |# (define (expand-disjunction forms) (if (null? forms) false - (let loop ((forms forms)) + (let process ((forms forms)) (if (null? (cdr forms)) (syntax-expression (car forms)) (make-disjunction (syntax-expression (car forms)) - (loop (cdr forms))))))) + (process (cdr forms))))))) (define (expand-lambda pattern actions receiver) ((if (pair? pattern) -- 2.25.1