diff options
Diffstat (limited to 'tests/011/macros-2.txr')
-rw-r--r-- | tests/011/macros-2.txr | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/011/macros-2.txr b/tests/011/macros-2.txr new file mode 100644 index 00000000..0d63a13b --- /dev/null +++ b/tests/011/macros-2.txr @@ -0,0 +1,27 @@ +@(do + (defmacro while ((condition : result) . body) + (let ((cblk (gensym "cnt-blk-")) + (bblk (gensym "brk-blk-"))) + '(macrolet ((break (value) '(return-from ,',bblk ,value))) + (symacrolet ((break (return-from ,bblk)) + (continue (return-from ,cblk))) + (block ,bblk + (for () (,condition ,result) () + (block ,cblk ,*body))))))) + + (let ((i 0)) + (while ((< i 100)) + (if (< (inc i) 20) + continue) + (if (> i 30) + break) + (prinl i))) + + (prinl + (sys:expand + '(while ((< i 100)) + (if (< (inc i) 20) + continue) + (if (> i 30) + break) + (prinl i))))) |