diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-09-30 20:27:46 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-09-30 20:27:46 -0700 |
commit | 93c1a1e0205819214f9cf56d95ecc2842e515bab (patch) | |
tree | 13db13d8d967ac337aec2567d19bf526c16fb8dc | |
parent | 9729d5cdd70e81b001e267cbafd9fa221c6c61bb (diff) | |
download | txr-93c1a1e0205819214f9cf56d95ecc2842e515bab.tar.gz txr-93c1a1e0205819214f9cf56d95ecc2842e515bab.tar.bz2 txr-93c1a1e0205819214f9cf56d95ecc2842e515bab.zip |
Better argument checking in new macro.
* share/txr/stdlib/struct.tl (new): Check that arguments
occur pairwise instead of allowing an odd number to cause
a puzzling error.
-rw-r--r-- | share/txr/stdlib/struct.tl | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/share/txr/stdlib/struct.tl b/share/txr/stdlib/struct.tl index 45d8b4e9..c8eadc8b 100644 --- a/share/txr/stdlib/struct.tl +++ b/share/txr/stdlib/struct.tl @@ -149,6 +149,9 @@ (obj (throwf 'eval-error "~s: bad syntax: ~s" 'qref refs)))) (defmacro new (spec . pairs) + (if (oddp (length pairs)) + (throwf 'eval-error "~s: slot initform arguments must occur pairwise" + 'new)) (let ((qpairs (mappend (aret ^(',@1 ,@2)) (tuples 2 pairs)))) (tree-case spec ((atom . args) ^(make-struct ',atom (list ,*qpairs) ,*args)) |