Change MAKE-DEFINITION so that its second argument is required. When
authorChris Hanson <org/chris-hanson/cph>
Sat, 26 Mar 2005 04:17:04 +0000 (04:17 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 26 Mar 2005 04:17:04 +0000 (04:17 +0000)
it was optional, a definition

(define foo #!default)

was incorrectly treated as if it were

(define foo)

v7/src/runtime/scan.scm
v7/src/runtime/scode.scm

index 651960a817cee577eabdc581025ab664d0a97924..9ba63ef640c4337ff8ba92ed9702cc5922c59248 100644 (file)
@@ -1,8 +1,9 @@
 #| -*-Scheme-*-
 
-$Id: scan.scm,v 14.8 2003/02/14 18:28:33 cph Exp $
+$Id: scan.scm,v 14.9 2005/03/26 04:16:57 cph Exp $
 
-Copyright (c) 1988-1999 Massachusetts Institute of Technology
+Copyright 1986,1987,1988,1989,1990,1992 Massachusetts Institute of Technology
+Copyright 2005 Massachusetts Institute of Technology
 
 This file is part of MIT/GNU Scheme.
 
@@ -131,7 +132,8 @@ USA.
                            body*)))))
 
 (define (unscan-loop names body receiver)
-  (cond ((null? names) (receiver '() body))
+  (cond ((not (pair? names))
+        (receiver '() body))
        ((assignment? body)
         (assignment-components body
           (lambda (name value)
@@ -176,7 +178,10 @@ USA.
        (vector open-block-tag names declarations)
        (if (null? names)
           '()
-          (make-sequence (map make-definition names)))
+          (make-sequence
+           (map (lambda (name)
+                  (make-definition name (make-unassigned-reference-trap)))
+                names)))
        body)))
 
 (define (open-block? object)
index 643a8e14ce51a4551e44a2deca4101a4e1bf8ff9..681a6b2581e965da871af9c399c96a3b6e40606b 100644 (file)
@@ -1,8 +1,9 @@
 #| -*-Scheme-*-
 
-$Id: scode.scm,v 14.19 2003/02/14 18:28:33 cph Exp $
+$Id: scode.scm,v 14.20 2005/03/26 04:17:04 cph Exp $
 
-Copyright (c) 1988-1999, 2001 Massachusetts Institute of Technology
+Copyright 1986,1987,1988,1989,1990,1991 Massachusetts Institute of Technology
+Copyright 1992,2001,2005 Massachusetts Institute of Technology
 
 This file is part of MIT/GNU Scheme.
 
@@ -105,12 +106,8 @@ USA.
 \f
 ;;;; Definition/Assignment
 
-(define (make-definition name #!optional value)
-  (&typed-pair-cons (ucode-type definition)
-                   name
-                   (if (default-object? value)
-                       (make-unassigned-reference-trap)
-                       value)))
+(define-integrable (make-definition name value)
+  (&typed-pair-cons (ucode-type definition) name value))
 
 (define-integrable (definition? object)
   (object-type? (ucode-type definition) object))