From 096dcb8e10678f7ec4aec17edba74e91f1384911 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 29 Jan 2021 21:02:23 -0500 Subject: guix: Add missing Guile patch. --- ...rve-all-slot-options-in-redefinable-class.patch | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 0001-goops-Preserve-all-slot-options-in-redefinable-class.patch (limited to '0001-goops-Preserve-all-slot-options-in-redefinable-class.patch') diff --git a/0001-goops-Preserve-all-slot-options-in-redefinable-class.patch b/0001-goops-Preserve-all-slot-options-in-redefinable-class.patch new file mode 100644 index 0000000..f47668b --- /dev/null +++ b/0001-goops-Preserve-all-slot-options-in-redefinable-class.patch @@ -0,0 +1,46 @@ +From cbc434527938182389ebe72c258587d137a85891 Mon Sep 17 00:00:00 2001 +From: David Thompson +Date: Fri, 29 Jan 2021 11:04:56 -0500 +Subject: [PATCH] goops: Preserve all slot options in redefinable classes. + +* module/goops.scm (compute-slots): Fix slot + transformation. +--- + module/oop/goops.scm | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +diff --git a/module/oop/goops.scm b/module/oop/goops.scm +index df6df4f7b..a80be6a7a 100644 +--- a/module/oop/goops.scm ++++ b/module/oop/goops.scm +@@ -3081,18 +3081,20 @@ var{initargs}." + (slot-definition-name s))) + (ref (slot-definition-slot-ref/raw s*)) + (set! (slot-definition-slot-set! s*))) +- (make (class-of s) #:name (slot-definition-name s) +- #:getter (slot-definition-getter s) +- #:setter (slot-definition-setter s) +- #:accessor (slot-definition-accessor s) +- #:init-keyword (slot-definition-init-keyword s) +- #:init-thunk (slot-definition-init-thunk s) ++ (apply make (class-of s) + #:allocation #:virtual + ;; TODO: Make faster. + #:slot-ref (lambda (o) + (ref (slot-ref o 'indirect-slots))) + #:slot-set! (lambda (o v) +- (set! (slot-ref o 'indirect-slots) v))))) ++ (set! (slot-ref o 'indirect-slots) v)) ++ (let loop ((options (slot-definition-options s))) ++ (match options ++ (() '()) ++ (((or #:allocation #:slot-ref #:slot-set!) _ . rest) ++ (loop rest)) ++ ((kw arg . rest) ++ (cons* kw arg (loop rest)))))))) + (else s))) + (unless (equal? (list-head slots (length static-slots)) + static-slots) +-- +2.25.1 + -- cgit v1.2.3