Latest tamarin asserts follow code:
(define x (lambda ()))
(define y (lambda ()))
This is caused by initialize same method many times.
I've avoided this assertion by assignning uniq number to each method.
(f 1)))
;; check if recursion
-(letrec ([fact (lambda (n)
+(letrec ([fact (lambda (n)
(if (<= n 1)
1
(* n (fact (- n 1)))))])
/bin/echo -n "${file}..."
# generate expected output
sed -n 's/;;; *//p' $file > $file.expect
-
+
# compile and execute
src/habc-scm $file
avmplus a.abc > $file.actual
echo "ok"
fi
- rm -f $file.expect $file.actual $file.diff
+ rm -f $file.expect $file.actual $file.diff
done
open Node
open Cpool
+let count = ref 0
+let uniq _ =
+ incr count;
+ !count
let qname_of_stmt_name : Ast.stmt_name -> Cpool.multiname=
function
generate_expr body in
let m =
{Asm.empty_method with
- name = make_qname "";
+ name = make_qname @@ string_of_int @@ uniq ();
params = List.map (const 0) args;
instructions = body' @ [ReturnValue] } in
[NewFunction m]
{Asm.empty_method with
name =
make_qname "";
- instructions =
+r instructions =
[ GetLocal_0; PushScope ] @ program @ [ReturnVoid]}
let generate program =