commit b1dd40fd7bfe18bf20d0ef8fa284a56aad57b799
parent d1cdfc3caf9ae268c842fb7e5616d712673833dd
Author: Andres Navarro <canavarro82@gmail.com>
Date:   Wed, 23 Nov 2011 04:22:02 -0300
Bugfix: in do_map_cycle added a missing i2tv when constructing do_map continuation.
Diffstat:
3 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/src/kgcombiners.c b/src/kgcombiners.c
@@ -500,7 +500,6 @@ void do_map(klisp_State *K)
     TValue last_pair = xparams[2];
     int32_t n = ivalue(xparams[3]);
     TValue denv = xparams[4];
-    /* XXX */    klisp_assert(ttisenvironment(denv));
     bool dummyp = bvalue(xparams[5]);
 
     /* this case is used to kick start the mapping of both
@@ -525,7 +524,6 @@ void do_map(klisp_State *K)
 	/* have to unwrap the applicative to avoid extra evaluation of first */
 	TValue new_expr = kcons(K, kunwrap(app), first_ptree);
 	krooted_tvs_push(K, new_expr);
-	/* XXX */ klisp_assert(ttisenvironment(denv));
 	TValue new_cont = 
 	    kmake_continuation(K, kget_cc(K), do_map, 6, app, 
 			       ls, last_pair, i2tv(n), denv, KFALSE);
@@ -552,7 +550,6 @@ void do_map_cycle(klisp_State *K)
     TValue dummy = xparams[1];
     int32_t cpairs = ivalue(xparams[2]);
     TValue denv = xparams[3];
-    /* XXX */ klisp_assert(ttisenvironment(denv));
 
     /* obj: (cycle-part . last-result-pair) */
     TValue ls = kcar(obj);
@@ -567,10 +564,11 @@ void do_map_cycle(klisp_State *K)
     /* schedule the mapping of the elements of the cycle, 
        signal dummyp = true to avoid creating a pair for
        the inert value passed to the first continuation */
-    /* XXX */ klisp_assert(ttisenvironment(denv));
     TValue new_cont = 
 	kmake_continuation(K, encycle_cont, do_map, 6, app, ls, 
-			   last_apair, cpairs, denv, KTRUE);
+			   last_apair, i2tv(cpairs), denv, KTRUE);
+    klisp_assert(ttisenvironment(denv));
+
     krooted_tvs_pop(K); 
     kset_cc(K, new_cont);
     /* this will be like a nop and will continue with do_map */
@@ -623,13 +621,11 @@ void map(klisp_State *K)
 	: kmake_continuation(K, kget_cc(K), do_map_cycle, 4, 
 			     app, dummy, i2tv(res_cpairs), denv);
 
-
     krooted_tvs_push(K, ret_cont);
 
     /* schedule the mapping of the elements of the acyclic part.
        signal dummyp = true to avoid creating a pair for
        the inert value passed to the first continuation */
-    /* XXX */ klisp_assert(ttisenvironment(denv));
     TValue new_cont = 
 	kmake_continuation(K, ret_cont, do_map, 6, app, lss, dummy,
 			   i2tv(res_apairs), denv, KTRUE);
@@ -639,6 +635,7 @@ void map(klisp_State *K)
     krooted_tvs_pop(K); 
 
     kset_cc(K, new_cont);
+
     /* this will be a nop, and will continue with do_map */
     kapply_cc(K, KINERT);
 }
diff --git a/src/tests/combiners.k b/src/tests/combiners.k
@@ -209,7 +209,7 @@
 	  10))
 
 
-#;($check equal?
+($check equal?
 	(map ($lambda (x)
 	       (- 0 x))
 	     (list 1 . #0=(2 3 4 . #0#)))
diff --git a/src/tests/test-all.k b/src/tests/test-all.k
@@ -1,7 +1,7 @@
 (load "tests/check.k")
 (load "tests/test-helpers.k")
 
- (check-set-mode! check-mode-report)
+;; (check-set-mode! check-mode-report)
 
 ;; TODO add applicative?/operative? for all cominers in all test files