Environment cache bugfix for define.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 25 Oct 2016 06:59:20 +0000 (08:59 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 12 Dec 2016 19:33:48 +0000 (20:33 +0100)
* define.c (define): Invalidate cache.  Fixes vector test.
* GNUmakefile (mes-check, guile-check): Use set -e.  Fixes skipping over errors.

GNUmakefile
define.c

index a6f843217a76cbd3fbffafd3456ea23a631bfc8c..958cc119d07ba4085e0b318d5793dc1a75863b99 100644 (file)
@@ -59,13 +59,13 @@ MES-0:=guile/mes-0.scm
 MES:=./mes
 
 mes-check: all
-       for i in $(TESTS); do ./$$i; done
+       set -e; for i in $(TESTS); do ./$$i; done
 
 guile-check:
-       for i in $(TESTS); do\
+       set -e; for i in $(TESTS); do\
                guile -s <(cat $(MES-0) $$(scripts/include.mes $$i | grep -Ev 'let.mes|quasiquote.mes|base-0|loop-0|srfi-0') $$i);\
        done
-       for i in $(TESTS); do\
+       set -e; for i in $(TESTS); do\
                guile -s <(cat $(MES-0) module/mes/test.mes $$i);\
        done
 
index f05d908baf62c08867ab59ff83f7f6cf61ac73de..fd6c87e336d706de39e37b2dbe1c6ac32e64eb16 100644 (file)
--- a/define.c
+++ b/define.c
@@ -29,6 +29,7 @@ define (scm *x, scm *a)
   else {
     name = car (name);
     scm *p = pairlis (cadr (x), cadr (x), a);
+    cache_invalidate_range (p, a);
     e = builtin_eval (make_lambda (cdadr (x), cddr (x)), p);
   }
   if (eq_p (car (x), &symbol_define_macro) == &scm_t)