mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
toplevel vars added by syntax expansion are unbound
* module/ice-9/psyntax.scm (chi-top): When adding to the toplevel environment at compile-time, default to undefined variables, not variables defined to #f. * module/ice-9/psyntax-pp.scm: Regenerate. * module/ice-9/boot-9.scm (module-add!): Add a new pre-modules version of this function, so we can add variables the environment, not just values. (module-define!): Use module-add!.
This commit is contained in:
parent
ac6ce16bc9
commit
05a5e5d6d0
3 changed files with 4176 additions and 4170 deletions
|
@ -1,6 +1,6 @@
|
|||
;;; -*- mode: scheme; coding: utf-8; -*-
|
||||
|
||||
;;;; Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010
|
||||
;;;; Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011
|
||||
;;;; Free Software Foundation, Inc.
|
||||
;;;;
|
||||
;;;; This library is free software; you can redistribute it and/or
|
||||
|
@ -334,12 +334,13 @@ If there is no handler at all, Guile prints an error and then exits."
|
|||
;; have booted.
|
||||
(define (module-name x)
|
||||
'(guile))
|
||||
(define (module-add! module sym var)
|
||||
(hashq-set! (%get-pre-modules-obarray) sym var))
|
||||
(define (module-define! module sym val)
|
||||
(let ((v (hashq-ref (%get-pre-modules-obarray) sym)))
|
||||
(if v
|
||||
(variable-set! v val)
|
||||
(hashq-set! (%get-pre-modules-obarray) sym
|
||||
(make-variable val)))))
|
||||
(module-add! (current-module) sym (make-variable val)))))
|
||||
(define (module-ref module sym)
|
||||
(let ((v (module-variable module sym)))
|
||||
(if v (variable-ref v) (error "badness!" (pk module) (pk sym)))))
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
;;;; -*-scheme-*-
|
||||
;;;;
|
||||
;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010 Free Software Foundation, Inc.
|
||||
;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
;;;;
|
||||
;;;; This library is free software; you can redistribute it and/or
|
||||
;;;; modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -1143,10 +1143,9 @@
|
|||
(let ((old (module-variable (current-module) n)))
|
||||
;; use value of the same-named imported variable, if
|
||||
;; any
|
||||
(module-define! (current-module) n
|
||||
(if (variable? old)
|
||||
(variable-ref old)
|
||||
#f))))
|
||||
(if (and (variable? old) (variable-bound? old))
|
||||
(module-define! (current-module) n (variable-ref old))
|
||||
(module-add! (current-module) n (make-undefined-variable)))))
|
||||
(eval-if-c&e m
|
||||
(build-global-definition s n (chi e r w mod))
|
||||
mod))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue