mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-03 05:20:16 +02:00
module-ref-submodule deprecation fixes
* module/ice-9/boot-9.scm (module-ref-submodule) (module-define-submodule!): Pull deprecated shims here, as we need them before loading (ice-9 deprecated). Also bugfix to only define the module if there is no local variable, even if it is unbound. * module/ice-9/deprecated.scm: Remove from here.
This commit is contained in:
parent
61bac799dd
commit
dcb68c09d0
2 changed files with 30 additions and 20 deletions
|
@ -1803,6 +1803,33 @@ If there is no handler at all, Guile prints an error and then exits."
|
||||||
(define (module-define-submodule! module name submodule)
|
(define (module-define-submodule! module name submodule)
|
||||||
(hashq-set! (module-submodules module) name submodule))
|
(hashq-set! (module-submodules module) name submodule))
|
||||||
|
|
||||||
|
;; It used to be, however, that module names were also present in the
|
||||||
|
;; value namespace. When we enable deprecated code, we preserve this
|
||||||
|
;; legacy behavior.
|
||||||
|
;;
|
||||||
|
;; These shims are defined here instead of in deprecated.scm because we
|
||||||
|
;; need their definitions before loading other modules.
|
||||||
|
;;
|
||||||
|
(begin-deprecated
|
||||||
|
(define (module-ref-submodule module name)
|
||||||
|
(or (hashq-ref (module-submodules module) name)
|
||||||
|
(and (module-submodule-binder module)
|
||||||
|
((module-submodule-binder module) module name))
|
||||||
|
(let ((var (module-local-variable module name)))
|
||||||
|
(and var (variable-bound? var) (module? (variable-ref var))
|
||||||
|
(begin
|
||||||
|
(warn "module" module "not in submodules table")
|
||||||
|
(variable-ref var))))))
|
||||||
|
|
||||||
|
(define (module-define-submodule! module name submodule)
|
||||||
|
(let ((var (module-local-variable module name)))
|
||||||
|
(if (and var
|
||||||
|
(or (not (variable-bound? var))
|
||||||
|
(not (module? (variable-ref var)))))
|
||||||
|
(warn "defining module" module ": not overriding local definition" var)
|
||||||
|
(module-define! module name submodule)))
|
||||||
|
(hashq-set! (module-submodules module) name submodule)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; {Low Level Bootstrapping}
|
;;; {Low Level Bootstrapping}
|
||||||
|
|
|
@ -64,9 +64,7 @@
|
||||||
the-last-stack
|
the-last-stack
|
||||||
save-stack
|
save-stack
|
||||||
named-module-use!
|
named-module-use!
|
||||||
top-repl)
|
top-repl))
|
||||||
|
|
||||||
#:replace (module-ref-submodule module-define-submodule!))
|
|
||||||
|
|
||||||
|
|
||||||
;;;; Deprecated definitions.
|
;;;; Deprecated definitions.
|
||||||
|
@ -319,23 +317,8 @@
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(set! id old-v) ...)))))))))
|
(set! id old-v) ...)))))))))
|
||||||
|
|
||||||
(define (module-ref-submodule module name)
|
;; There are deprecated definitions for module-ref-submodule and
|
||||||
(or (hashq-ref (module-submodules module) name)
|
;; module-define-submodule! in boot-9.scm.
|
||||||
(and (module-submodule-binder module)
|
|
||||||
((module-submodule-binder module) module name))
|
|
||||||
(let ((var (module-local-variable module name)))
|
|
||||||
(and (variable-bound? var)
|
|
||||||
(module? (variable-ref var))
|
|
||||||
(begin
|
|
||||||
(warn "module" module "not in submodules table")
|
|
||||||
(variable-ref var))))))
|
|
||||||
|
|
||||||
(define (module-define-submodule! module name submodule)
|
|
||||||
(let ((var (module-local-variable module name)))
|
|
||||||
(if (and var (variable-bound? var) (not (module? (variable-ref var))))
|
|
||||||
(warn "defining module" module ": not overriding local definition" var)
|
|
||||||
(module-define! module name submodule)))
|
|
||||||
(hashq-set! (module-submodules module) name submodule))
|
|
||||||
|
|
||||||
;; Define (%app) and (%app modules), and have (app) alias (%app). This
|
;; Define (%app) and (%app modules), and have (app) alias (%app). This
|
||||||
;; side-effects the-root-module, both to the submodules table and (through
|
;; side-effects the-root-module, both to the submodules table and (through
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue