summarylogtreecommitdiffstats
path: root/define-values.patch
blob: 8710ffb8b249b697dfc187d67900486505e00b1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
This patch fixes an issue with define-values generating unbound variables
when compiled with Guile >= 3.0.11, which would lead to compilation failures.

Thanks rubin55 <me@rubin55.org> for coming up with a fix.

--- a/spells/define-values.scm
+++ b/spells/define-values.scm
@@ -35,21 +35,15 @@
          (with-syntax (((dummy) (generate-temporaries '(dummy))))
            (syntax
             (define dummy (begin exp ... 'dummy)))))
-	((_ (id ...) exp0 exp ...)
-	 ;; Mutable-ids are needed so that ids defined by
-	 ;; define-values can be exported from a library (mutated
-	 ;; variables cannot be exported).  This fix is due to Andre
-	 ;; van Tonder.
-	 (with-syntax (((mutable-id ...) (generate-temporaries (syntax (id ...))))
-		       ((result ...)     (generate-temporaries (syntax (id ...))))
+        ((_ (id ...) exp0 exp ...)
+         (with-syntax (((result ...)     (generate-temporaries (syntax (id ...))))
                        ((dummy)          (generate-temporaries '(dummy))))
-	   (syntax
-	    (begin
-	      (define mutable-id) ...
-	      (define dummy
-		(call-with-values
-                    (lambda () exp0 exp ...)
-		  (lambda (result ...)
-		    (set! mutable-id result) ...
-                    'dummy)))
-	      (define id mutable-id) ...))))))))
+           (syntax
+            (begin
+              (define id) ...
+              (define dummy
+                (call-with-values
+                 (lambda () exp0 exp ...)
+                 (lambda (result ...)
+                   (set! id result) ...
+                   'dummy)))))))))))