Fix error reporting in PARSE-DEFINE-FORM.
authorTaylor R Campbell <campbell@mumble.net>
Thu, 3 Sep 2009 16:09:19 +0000 (12:09 -0400)
committerTaylor R Campbell <campbell@mumble.net>
Thu, 3 Sep 2009 16:09:19 +0000 (12:09 -0400)
Change PARSE-DEFINE-FORM from returning two values to taking a
continuation that must take two arguments and return a form, because
ILL-FORMED-SYNTAX does not signal an error but returns a form
classifying which signals an error.

src/runtime/mit-syntax.scm
src/runtime/sysmac.scm

index 57796ab897d692cf08fd01be16a7ae2ca2d15e7a..b7cb3d3496aabecf2dc140d25a0e2ad4bd7d14a3 100644 (file)
@@ -224,24 +224,27 @@ USA.
                             variable-binding-theory)))))
     (lambda (form rename compare)
       compare                          ;ignore
-      (receive (name value) (parse-define-form form rename)
-       `(,keyword ,name ,value)))))
+      (parse-define-form form rename
+       (lambda (name value)
+         `(,keyword ,name ,value))))))
 
-(define (parse-define-form form rename)
+(define (parse-define-form form rename receiver)
   (cond ((syntax-match? '((IDENTIFIER . MIT-BVL) + FORM) (cdr form))
         (parse-define-form
          `(,(car form) ,(caadr form)
                        (,(rename 'NAMED-LAMBDA) ,@(cdr form)))
-         rename))
+         rename
+         receiver))
        ((syntax-match? '((DATUM . MIT-BVL) + FORM) (cdr form))
         (parse-define-form
          `(,(car form) ,(caadr form)
                        (,(rename 'LAMBDA) ,(cdadr form) ,@(cddr form)))
-         rename))
+         rename
+         receiver))
        ((syntax-match? '(IDENTIFIER) (cdr form))
-        (values (cadr form) (unassigned-expression)))
+        (receiver (cadr form) (unassigned-expression)))
        ((syntax-match? '(IDENTIFIER EXPRESSION) (cdr form))
-        (values (cadr form) (caddr form)))
+        (receiver (cadr form) (caddr form)))
        (else
         (ill-formed-syntax form))))
 
index d3bcfb492721f74c913d63a4a199b580e2f54cd1..3550d67ef9ad325d705c199cc453e0fc0c146ce5 100644 (file)
@@ -98,10 +98,11 @@ USA.
   (er-macro-transformer
    (lambda (form rename compare)
      compare
-      (receive (name value) (parse-define-form form rename)
-       `(,(rename 'BEGIN)
-         (,(rename 'DEFINE) ,name)
-         (,(rename 'ADD-BOOT-INIT!)
-          (,(rename 'LAMBDA) ()
-                             (,(rename 'SET!) ,name ,value)
-                             ,(rename 'UNSPECIFIC))))))))
\ No newline at end of file
+     (parse-define-form form rename
+       (lambda (name value)
+        `(,(rename 'BEGIN)
+           (,(rename 'DEFINE) ,name)
+           (,(rename 'ADD-BOOT-INIT!)
+            (,(rename 'LAMBDA) ()
+              (,(rename 'SET!) ,name ,value)
+              ,(rename 'UNSPECIFIC)))))))))
\ No newline at end of file