summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Pirotte <david@altosw.be>2021-05-19 04:49:37 -0300
committerDavid Pirotte <david@altosw.be>2021-05-19 04:49:37 -0300
commited3bace824942d7b3e9face9b05f8b2e16fb98a2 (patch)
treebcdda98c41eb9903619c734e8588f154187333fc
parent8bd5123a922f56d47646d7faf514bc4f0ce9e4cb (diff)
Avoid overrides core binding warnings - 3.0/2.2/2.0 compatibilitywip-3.0
As describe in the previous d8bd512 commit, the(those) module(s) that calls module-use! must also, re-export-and-replace the core bindings that were overridden. * g-golf.scm: re-export-and-replace! connect (overrides core binding in (g-golf hl-api gobject)), then delete member map for-each (overrides core binding in (srfi srfi-1). * g-golf/hl-api/function.scm (gi-add-method-gf): Updated to fulfill the above described 'contract', appropriately calling (re-export-and-replace-names! (g-golf) `(,name)).
-rw-r--r--g-golf.scm7
-rw-r--r--g-golf/hl-api/function.scm11
2 files changed, 14 insertions, 4 deletions
diff --git a/g-golf.scm b/g-golf.scm
index b9a4e27..673deaa 100644
--- a/g-golf.scm
+++ b/g-golf.scm
@@ -113,7 +113,14 @@
warn
last))
+
(eval-when (expand load eval)
+ (re-export-and-replace! (current-module)
+ connect
+ delete
+ member
+ map
+ for-each)
(re-export-public-interface (oop goops)
(oop goops describe)
(ice-9 match)
diff --git a/g-golf/hl-api/function.scm b/g-golf/hl-api/function.scm
index 18bd58a..52b712a 100644
--- a/g-golf/hl-api/function.scm
+++ b/g-golf/hl-api/function.scm
@@ -283,12 +283,14 @@ method with its 'old' definition.
!#
(define* (gi-add-method-gf name #:optional (module #f))
- (let* ((module (or module
+ (let* ((g-golf (resolve-module '(g-golf)))
+ (module (or module
(resolve-module '(g-golf hl-api gobject))))
(variable (module-variable module name))
(value (and variable
(variable-bound? variable)
- (variable-ref variable))))
+ (variable-ref variable)))
+ (names `(,name)))
(if value
(cond ((generic? value)
value)
@@ -296,12 +298,13 @@ method with its 'old' definition.
(gi-add-method-gf (syntax-name->method-name name)
module))
(else
- (module-replace! module `(,name))
+ (module-replace! module names)
+ (re-export-and-replace-names! g-golf names)
(let ((gf (ensure-generic value name)))
(module-set! module name gf)
gf)))
(begin
- (module-export! module `(,name))
+ (module-export! module names)
(let ((gf (make <generic> #:name name)))
(module-set! module name gf)
gf)))))