diff options
Diffstat (limited to 'mu.arc')
-rw-r--r-- | mu.arc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/mu.arc b/mu.arc index 757db53e..9390206c 100644 --- a/mu.arc +++ b/mu.arc @@ -819,7 +819,7 @@ (assert nil "couldn't find field in @instr"))))) (each arg args (assert (~isa-field v.arg) "arg @arg is also a field name") - (when (maybe-add arg location idx) + (when (and (~is 'quasiquote car.arg) (maybe-add arg location idx)) (err "use before set: @arg")))) (each arg oargs (trace "cn0" "checking " arg) @@ -1165,15 +1165,20 @@ rewrite (let (name (_make-br-fn fragment)) rest (assert (is 'make-br-fn _make-br-fn)) - (= rewrite-rules*.name fragment)) + (set rewrite-rules*.name) + (= function*.name (convert-names:convert-braces:insert-code fragment name))) ;else ; must be rewriteable to one of the above - (let new-form (rewrite rewrite-rules*.op rest) + (let new-form (rewrite op rest) (add-code new-form)) ))) -(def rewrite (rewrite-rule params) - rewrite-rule) +(def rewrite (op params) + (prn "a: " params) + (prn "b: " function*.op) + (= routine* (annotate 'routine (obj call-stack (list + (obj fn-name op pc 0 args params caller-arg-idx 0))))) + (run-for-time-slice 10000)) (def freeze-functions () (each (name body) canon.function* |