From 37c881d461e55d5c5115c6c6ed397a3df8913fd2 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 11 Nov 2016 22:08:33 -0800 Subject: Clause in case{q,ql,qual} with no forms yields nil. * eval.c (me_case): If forms is nil, substitute the object (nil) for forms, to ensure a nil result through the expansion to a cond. * txr.1: Documented and added compat notes. --- eval.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index f863e5fd..e0c852b0 100644 --- a/eval.c +++ b/eval.c @@ -3132,6 +3132,7 @@ static val me_case(val form, val menv) val testform = pop(&form); val tformsym = gensym(lit("test-")); val memfuncsym, eqfuncsym; + val lofnil = cons(nil, nil); list_collect_decl (condpairs, ptail); if (casesym == caseq_s) { @@ -3167,12 +3168,13 @@ static val me_case(val form, val menv) nao), forms)); } else { + uses_or2; ptail = list_collect(ptail, cons(list(if3(atom(keys), eqfuncsym, memfuncsym), tformsym, list(quote_s, keys, nao), nao), - forms)); + or2(forms, lofnil))); } } -- cgit v1.2.3