summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-11-27 06:42:57 -0800
committerKaz Kylheku <kaz@kylheku.com>2018-11-27 06:42:57 -0800
commitbcf9ea19a41b36a5e4bd4e7bb37cca513c87fa2f (patch)
treedd3d3d73b1697c19477aa0ac1880eb3d373b872e
parent7996c9220ec33a5c9c4d3acdade3b4b93f7dd87f (diff)
downloadtxr-bcf9ea19a41b36a5e4bd4e7bb37cca513c87fa2f.tar.gz
txr-bcf9ea19a41b36a5e4bd4e7bb37cca513c87fa2f.tar.bz2
txr-bcf9ea19a41b36a5e4bd4e7bb37cca513c87fa2f.zip
case macros: stricter syntactic check.
* eval.c (me_case): Throw error if the test form is missing.
-rw-r--r--eval.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 5f7ee78d..e1c75197 100644
--- a/eval.c
+++ b/eval.c
@@ -3913,6 +3913,9 @@ static val me_case(val form, val menv)
list_collect_decl (condpairs, ptail);
list_collect_decl (hashforms, qtail);
+ if (atom(cdr(form_orig)))
+ eval_error(form_orig, lit("~s: missing test form"), casesym, nao);
+
if (casesym == caseq_s || casesym == caseq_star_s) {
memfuncsym = memq_s;
eqfuncsym = eq_s;