Don't signal error from ENVIRONMENT-LOOKUP-MACRO if name is unbound.
authorChris Hanson <org/chris-hanson/cph>
Tue, 12 Feb 2002 21:17:47 +0000 (21:17 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 12 Feb 2002 21:17:47 +0000 (21:17 +0000)
v7/src/runtime/syntactic-closures.scm
v7/src/runtime/uenvir.scm

index 1b8b050d958e14c400edd073d77aadc3e91e9edf..96a0c3bded0757a82ba3b3d5398c63cf52f5bb43 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: syntactic-closures.scm,v 14.3 2002/02/12 00:30:29 cph Exp $
+;;; $Id: syntactic-closures.scm,v 14.4 2002/02/12 21:17:47 cph Exp $
 ;;;
 ;;; Copyright (c) 1989-1991, 2001, 2002 Massachusetts Institute of Technology
 ;;;
 ;;; modified.
 
 (define (environment/lookup environment name)
-  (and (environment-bound? environment name)
-       (let ((item (environment-lookup-macro environment name)))
-        (cond ((or (item? item) (not item))
-               item)
-              ;; **** Kludge to support bootstrapping.
-              ((procedure? item)
-               (non-hygienic-macro-transformer->expander item environment))
-              (else
-               (error:wrong-type-datum item "syntactic keyword"))))))
+  (let ((item (environment-lookup-macro environment name)))
+    (cond ((or (item? item) (not item))
+          item)
+         ;; **** Kludge to support bootstrapping.
+         ((procedure? item)
+          (non-hygienic-macro-transformer->expander item environment))
+         (else
+          (error:wrong-type-datum item "syntactic keyword")))))
 
 (define (environment/define environment name item)
   (environment-define-macro environment name item))
index cb934e2f48c5929b8480fc0825c6c97cbdd2730c..d0d4182cc2d00d8a9a5e6f34bef2acef8cdf5b40 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: uenvir.scm,v 14.54 2002/02/12 15:13:47 cph Exp $
+$Id: uenvir.scm,v 14.55 2002/02/12 21:17:30 cph Exp $
 
 Copyright (c) 1988-1999, 2001, 2002 Massachusetts Institute of Technology
 
@@ -156,9 +156,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
          (else value))))
 
 (define (environment-lookup-macro environment name)
-  (let ((value (environment-safe-lookup environment name)))
-    (and (macro-reference-trap? value)
-        (macro-reference-trap-transformer value))))
+  (and (eq? 'MACRO (environment-reference-type environment name))
+       (let ((value (environment-safe-lookup environment name)))
+        (and (macro-reference-trap? value)
+             (macro-reference-trap-transformer value)))))
 
 (define (environment-safe-lookup environment name)
   (cond ((interpreter-environment? environment)