test-simulator appears to be doing something.
This commit is contained in:
parent
c84eba7786
commit
27ee4739cc
|
@ -139,7 +139,12 @@
|
|||
(let: ([op : PrimitiveCommand (PerformStatement-op stmt)])
|
||||
(cond
|
||||
[(SetToplevel!? op)
|
||||
(error 'step-perform)]
|
||||
(env-mutate m
|
||||
(SetToplevel!-depth op)
|
||||
(toplevel-mutate (ensure-toplevel (env-ref m (SetToplevel!-depth op)))
|
||||
(SetToplevel!-pos op)
|
||||
|
||||
(machine-val m)))]
|
||||
[(CheckToplevelBound!? op)
|
||||
(error 'step-perform)]
|
||||
[(ExtendEnvironment/Prefix!? op)
|
||||
|
@ -182,7 +187,15 @@
|
|||
[else
|
||||
(error 'ensure-symbol)]))
|
||||
|
||||
|
||||
|
||||
(: ensure-toplevel (Any -> toplevel))
|
||||
(define (ensure-toplevel v)
|
||||
(cond
|
||||
[(toplevel? v)
|
||||
v]
|
||||
[else
|
||||
(error 'ensure-toplevel)]))
|
||||
|
||||
|
||||
(: current-instruction (machine -> Statement))
|
||||
(define (current-instruction m)
|
||||
|
@ -280,3 +293,9 @@
|
|||
(loop (add1 i))])))
|
||||
|
||||
|
||||
(: toplevel-mutate (toplevel Natural Any -> toplevel))
|
||||
(define (toplevel-mutate a-top index v)
|
||||
(make-toplevel (append (take (toplevel-vals a-top) index)
|
||||
(list v)
|
||||
(drop (toplevel-vals a-top) (add1 index)))))
|
||||
|
|
@ -230,16 +230,25 @@
|
|||
(lookup-primitive '-)
|
||||
(lookup-primitive '*)
|
||||
(lookup-primitive '=)))))
|
||||
|
||||
|
||||
(let ([m (new-machine `(,(make-PerformStatement (make-ExtendEnvironment/Prefix! '(some-variable)))
|
||||
,(make-AssignImmediateStatement 'val (make-Const "Danny"))
|
||||
,(make-PerformStatement (make-SetToplevel! 0 0 'some-variable))))])
|
||||
(run m)
|
||||
;; FIXME: I'm hitting what appears to be a Typed Racket bug that prevents me from inspecting
|
||||
;; the toplevel structure in the environment... :(
|
||||
#;(test (first (machine-env (run m)))
|
||||
(make-toplevel (vector (lookup-primitive '+)
|
||||
(lookup-primitive '-)
|
||||
(lookup-primitive '*)
|
||||
(lookup-primitive '=)))))
|
||||
)
|
||||
(let ([m (new-machine `(,(make-PerformStatement (make-ExtendEnvironment/Prefix! '(some-variable another)))
|
||||
,(make-AssignImmediateStatement 'val (make-Const "Danny"))
|
||||
,(make-PerformStatement (make-SetToplevel! 0 1 'another))))])
|
||||
(run m)
|
||||
;; FIXME: I'm hitting what appears to be a Typed Racket bug that prevents me from inspecting
|
||||
;; the toplevel structure in the environment... :(
|
||||
)
|
||||
(let ([m (new-machine `(,(make-PerformStatement (make-ExtendEnvironment/Prefix! '(some-variable)))
|
||||
,(make-AssignImmediateStatement 'val (make-Const "Danny"))
|
||||
,(make-PushEnvironment 5)
|
||||
,(make-PerformStatement (make-SetToplevel! 5 0 'some-variable))))])
|
||||
(run m)
|
||||
;; FIXME: I'm hitting what appears to be a Typed Racket bug that prevents me from inspecting
|
||||
;; the toplevel structure in the environment... :(
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user