mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-15 08:47:35 +02:00
Added adbv-set-assigned-value-helper!
This commit is contained in:
parent
e5903ee8bc
commit
d499c6fc49
1 changed files with 11 additions and 3 deletions
|
@ -86,6 +86,14 @@
|
||||||
;; Number of times variable is passed as an app-argument
|
;; Number of times variable is passed as an app-argument
|
||||||
(app-arg-count adbv:app-arg-count adbv:set-app-arg-count!)
|
(app-arg-count adbv:app-arg-count adbv:set-app-arg-count!)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(define (adbv-set-assigned-value-helper! var value)
|
||||||
|
(adbv:set-assigned-value! var value)
|
||||||
|
;; TODO: if value is a lambda, update the lambda's var ref's
|
||||||
|
;; BUT, what if other vars point to var? do we need to add
|
||||||
|
;; them to the lambda's list as well?
|
||||||
|
)
|
||||||
|
|
||||||
(define (adb:make-var)
|
(define (adb:make-var)
|
||||||
(%adb:make-var '? '? #f #f '() #f #f 0 0))
|
(%adb:make-var '? '? #f #f '() #f #f 0 0))
|
||||||
|
|
||||||
|
@ -157,7 +165,7 @@
|
||||||
(with-var! (define->var exp) (lambda (var)
|
(with-var! (define->var exp) (lambda (var)
|
||||||
(adbv:set-defined-by! var lid)
|
(adbv:set-defined-by! var lid)
|
||||||
(adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
(adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
||||||
(adbv:set-assigned-value! var (define->exp exp))
|
(adbv-set-assigned-value-helper! var (define->exp exp))
|
||||||
(adbv:set-const! var #f)
|
(adbv:set-const! var #f)
|
||||||
(adbv:set-const-value! var #f)))
|
(adbv:set-const-value! var #f)))
|
||||||
(analyze (define->exp exp) lid))
|
(analyze (define->exp exp) lid))
|
||||||
|
@ -166,7 +174,7 @@
|
||||||
(with-var! (set!->var exp) (lambda (var)
|
(with-var! (set!->var exp) (lambda (var)
|
||||||
(if (adbv:assigned-value var)
|
(if (adbv:assigned-value var)
|
||||||
(adbv:set-reassigned! var #t))
|
(adbv:set-reassigned! var #t))
|
||||||
(adbv:set-assigned-value! var (set!->exp exp))
|
(adbv-set-assigned-value-helper! var (set!->exp exp))
|
||||||
(adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
(adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
||||||
(adbv:set-const! var #f)
|
(adbv:set-const! var #f)
|
||||||
(adbv:set-const-value! var #f)))
|
(adbv:set-const-value! var #f)))
|
||||||
|
@ -201,7 +209,7 @@
|
||||||
(lambda (arg)
|
(lambda (arg)
|
||||||
;(trace:error `(app check arg ,arg ,(car params) ,(const-atomic? arg)))
|
;(trace:error `(app check arg ,arg ,(car params) ,(const-atomic? arg)))
|
||||||
(with-var! (car params) (lambda (var)
|
(with-var! (car params) (lambda (var)
|
||||||
(adbv:set-assigned-value! var arg)
|
(adbv-set-assigned-value-helper! var arg)
|
||||||
(cond
|
(cond
|
||||||
((const-atomic? arg)
|
((const-atomic? arg)
|
||||||
(adbv:set-const! var #t)
|
(adbv:set-const! var #t)
|
||||||
|
|
Loading…
Add table
Reference in a new issue