diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/language/python/compile.scm | 20 |
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))) |