mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-17 01:37:34 +02:00
Issue #361 - Ensure bound vars are known within scope
This commit is contained in:
parent
a46b2ec6ae
commit
29b2872f54
2 changed files with 14 additions and 6 deletions
|
@ -10,6 +10,10 @@ Features
|
||||||
make_c_opaque(opq, my_c_obj);
|
make_c_opaque(opq, my_c_obj);
|
||||||
opaque_collect_ptr(&opq) = 1; // Cyclone's GC will free this memory
|
opaque_collect_ptr(&opq) = 1; // Cyclone's GC will free this memory
|
||||||
|
|
||||||
|
Bug Fixes
|
||||||
|
|
||||||
|
- Fixed a bug where variables defined within `define-syntax` and `let-syntax` are reported as unbound by the compiler.
|
||||||
|
|
||||||
## 0.15 - February 26, 2020
|
## 0.15 - February 26, 2020
|
||||||
|
|
||||||
Features
|
Features
|
||||||
|
|
|
@ -903,11 +903,15 @@
|
||||||
;; At this point defines cannot be in lambda form.
|
;; At this point defines cannot be in lambda form.
|
||||||
;; EG: (define (f x) ...)
|
;; EG: (define (f x) ...)
|
||||||
((define? expr)
|
((define? expr)
|
||||||
(let ((bv* (cons (define->var expr) bv)))
|
;; #361 - Update parent list of bound variables to account
|
||||||
|
;; for defined variable since it is within that scope
|
||||||
|
(if (null? bv)
|
||||||
|
(set! bv (list bv))
|
||||||
|
(set-cdr! bv (cons (define->var expr) (cdr bv))))
|
||||||
`(define ,(define->var expr)
|
`(define ,(define->var expr)
|
||||||
,@(map
|
,@(map
|
||||||
(lambda (e) (clean e bv*))
|
(lambda (e) (clean e bv))
|
||||||
(define->exp expr)))))
|
(define->exp expr))))
|
||||||
;; For now, assume set is not introducing a new binding
|
;; For now, assume set is not introducing a new binding
|
||||||
((set!? expr)
|
((set!? expr)
|
||||||
`(set! ,(clean (set!->var expr) bv)
|
`(set! ,(clean (set!->var expr) bv)
|
||||||
|
@ -917,7 +921,7 @@
|
||||||
expr))
|
expr))
|
||||||
(else
|
(else
|
||||||
(error "macro cleanup unexpected expression: " expr))))
|
(error "macro cleanup unexpected expression: " expr))))
|
||||||
(clean expr '()))
|
(clean expr (list '____unused____)))
|
||||||
|
|
||||||
; TODO: get macro name, transformer
|
; TODO: get macro name, transformer
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue