summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/language/python/compile.scm20
1 files changed, 13 insertions, 7 deletions
diff --git a/modules/language/python/compile.scm b/modules/language/python/compile.scm
index c315815..a14c342 100644
--- a/modules/language/python/compile.scm
+++ b/modules/language/python/compile.scm
@@ -12,6 +12,8 @@
(define-syntax-rule (aif it p x y) (let ((it p)) (if it x y)))
+(define s/d 'set!)
+
(define-syntax clear-warning-data
(lambda (x)
(set! (@@ (system base message) %dont-warn-list) '())
@@ -182,21 +184,21 @@
(let ((v (string->symbol v)))
(if (null? addings)
(if op
- `(set! ,v (,(tr-op op) ,v ,u))
- `(set! ,v ,u))
+ `(,s/d ,v (,(tr-op op) ,v ,u))
+ `(,s/d ,v ,u))
(if op
- `(set! ,(exp vs kind)
+ `(,s/d ,(exp vs kind)
(,(O 'fset-x) ,v (list ,@(map q addings))
(,(tr-op op) (,(C 'ref-x) ,v ,@addings) ,u)))
- `(set! ,(exp vs kind)
+ `(,s/d ,(exp vs kind)
(,(O 'fset-x) ,v (list ,@(map q addings)) ,u)))))
(let ((v (string->symbol v)))
(if (null? addings)
(if op
- `(set! ,v (,(tr-op op) (,(C 'ref-x) ,v ,@addings) ,u))
- `(set! ,v ,u))
+ `(,s/d ,v (,(tr-op op) (,(C 'ref-x) ,v ,@addings) ,u))
+ `(,s/d ,v ,u))
(let* ((rev (reverse addings))
(las (car rev))
(new (reverse (cdr rev))))
@@ -668,7 +670,7 @@
((#:test (#:power #f (#:identifier v . _) () . #f) #f))
(#:assign (l)))
(let ((s (string->symbol v)))
- `(set! ,s ,(exp vs l))))
+ `(,s/d ,s ,(exp vs l))))
((#:comp x #f)
(exp vs x))
@@ -710,6 +712,10 @@
(language python module ,@args)
#:use-module (language python module python)))))
(x '())))
+
+ (if (fluid-ref (@@ (system base compile) %in-compile))
+ (set! s/d 'set!)
+ (set! s/d 'define))
(if (pair? start)
(set! x (cdr x)))