1 dnl @ ../doc/m4.texi:8197: Origin of test
2 dnl @ expected status: 0
4 dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
6 dnl @ This file is free software; the Free Software Foundation
7 dnl @ gives unlimited permission to copy and/or distribute it
8 dnl @ with or without modifications, as long as this notice
10 include(`foreach2.m4')
12 include(`foreachq2.m4')
15 foreach(`x', `', `<x>') / foreachq(`x', `', `<x>')
17 dnl 1-element list of empty element
18 foreach(`x', `()', `<x>') / foreachq(`x', ``'', `<x>')
20 dnl 2-element list of empty elements
21 foreach(`x', `(`',`')', `<x>') / foreachq(`x', ``',`'', `<x>')
22 dnl @result{}<><> / <><>
23 dnl 1-element list of a comma
24 foreach(`x', `(`,')', `<x>') / foreachq(`x', ``,'', `<x>')
25 dnl @result{}<,> / <,>
26 dnl 2-element list of unbalanced parentheses
27 foreach(`x', `(`(', `)')', `<x>') / foreachq(`x', ``(', `)'', `<x>')
28 dnl @result{}<(><)> / <(><)>
29 define(`ab', `oops')dnl using defn(`iterator')
30 foreach(`x', `(`a', `b')', `defn(`x')') /dnl
31 foreachq(`x', ``a', `b'', `defn(`x')')
33 define(`active', `ACT, IVE')
37 dnl list of unquoted macros; expansion occurs before recursion
38 foreach(`x', `(active, active)', `<x>
40 dnl @error{}m4trace: -4- active -> `ACT, IVE'
41 dnl @error{}m4trace: -4- active -> `ACT, IVE'
46 foreachq(`x', `active, active', `<x>
48 dnl @error{}m4trace: -3- active -> `ACT, IVE'
49 dnl @error{}m4trace: -3- active -> `ACT, IVE'
51 dnl @error{}m4trace: -3- active -> `ACT, IVE'
52 dnl @error{}m4trace: -3- active -> `ACT, IVE'
56 dnl list of quoted macros; expansion occurs during recursion
57 foreach(`x', `(`active', `active')', `<x>
59 dnl @error{}m4trace: -1- active -> `ACT, IVE'
60 dnl @result{}<ACT, IVE>
61 dnl @error{}m4trace: -1- active -> `ACT, IVE'
62 dnl @result{}<ACT, IVE>
63 foreachq(`x', ``active', `active'', `<x>
65 dnl @error{}m4trace: -1- active -> `ACT, IVE'
66 dnl @result{}<ACT, IVE>
67 dnl @error{}m4trace: -1- active -> `ACT, IVE'
68 dnl @result{}<ACT, IVE>
69 dnl list of double-quoted macro names; no expansion
70 foreach(`x', `(``active'', ``active'')', `<x>
74 foreachq(`x', ```active'', ``active''', `<x>