summaryrefslogtreecommitdiff
path: root/checks/217.improved_f
diff options
context:
space:
mode:
Diffstat (limited to 'checks/217.improved_f')
-rw-r--r--checks/217.improved_f43
1 files changed, 43 insertions, 0 deletions
diff --git a/checks/217.improved_f b/checks/217.improved_f
new file mode 100644
index 0000000..a11e131
--- /dev/null
+++ b/checks/217.improved_f
@@ -0,0 +1,43 @@
+dnl @ ../doc/m4.texi:7874: Origin of test
+dnl @ expected status: 0
+dnl @ extra options:
+dnl @ Copyright (C) 2006, 2007, 2008, 2009 Free Software
+dnl @ Foundation, Inc.
+dnl @ This file is free software; the Free Software Foundation
+dnl @ gives unlimited permission to copy and/or distribute it
+dnl @ with or without modifications, as long as this notice
+dnl @ is preserved.
+include(`forloop3.m4')
+dnl @result{}
+undivert(`forloop3.m4')dnl
+dnl @result{}divert(`-1')
+dnl @result{}# forloop_arg(from, to, macro) - invoke MACRO(value) for
+dnl @result{}# each value between FROM and TO, without define overhead
+dnl @result{}define(`forloop_arg', `ifelse(eval(`($1) <= ($2)'), `1',
+dnl @result{} `_forloop(`$1', eval(`$2'), `$3(', `)')')')
+dnl @result{}# forloop(var, from, to, stmt) - refactored to share code
+dnl @result{}define(`forloop', `ifelse(eval(`($2) <= ($3)'), `1',
+dnl @result{} `pushdef(`$1')_forloop(eval(`$2'), eval(`$3'),
+dnl @result{} `define(`$1',', `)$4')popdef(`$1')')')
+dnl @result{}define(`_forloop',
+dnl @result{} `$3`$1'$4`'ifelse(`$1', `$2', `',
+dnl @result{} `$0(incr(`$1'), `$2', `$3', `$4')')')
+dnl @result{}divert`'dnl
+forloop(`i', `1', `3', ` i')
+dnl @result{} 1 2 3
+define(`echo', `$@')
+dnl @result{}
+forloop_arg(`1', `3', ` echo')
+dnl @result{} 1 2 3
+include(`curry.m4')
+dnl @result{}
+forloop_arg(`1', `3', `curry(`pushdef', `a')')
+dnl @result{}
+a
+dnl @result{}3
+popdef(`a')a
+dnl @result{}2
+popdef(`a')a
+dnl @result{}1
+popdef(`a')a
+dnl @result{}a