aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-04-19 06:19:05 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-04-19 06:19:05 -0700
commit7b64f8f016c86f8a5bf4fcdd2f70d6ac83a1ec9b (patch)
treeca2320e707f947a237f75cf72870ad48cabc6fc2
parent2a038c0b77704fd53138a2d0bc9d1803d96a1a77 (diff)
downloadcppawk-7b64f8f016c86f8a5bf4fcdd2f70d6ac83a1ec9b.tar.gz
cppawk-7b64f8f016c86f8a5bf4fcdd2f70d6ac83a1ec9b.tar.bz2
cppawk-7b64f8f016c86f8a5bf4fcdd2f70d6ac83a1ec9b.zip
loop: argmax: no iters must produce nil.
-rw-r--r--cppawk-include/iter.h4
-rw-r--r--testcases-iter17
2 files changed, 19 insertions, 2 deletions
diff --git a/cppawk-include/iter.h b/cppawk-include/iter.h
index 23f71fd..93bb2d0 100644
--- a/cppawk-include/iter.h
+++ b/cppawk-include/iter.h
@@ -249,7 +249,7 @@ function __loop_argmax(a, arga, b, argb)
#define __am_old __g(arg)
#define __temp_argmax(amx, arg, expr) __am_max, __am_old,
-#define __init_argmax(amx, arg, expr) (__am_max = 0) || (amx = 0)
+#define __init_argmax(amx, arg, expr) (__am_max = 0) || (amx = __nil)
#define __test_argmax(amx, arg, expr) 1
#define __prep_argmax(amx, arg, expr) ((__am_old = __am_max) || 1) && \
((__am_max = \
@@ -267,7 +267,7 @@ function __loop_argmin(a, arga, b, argb)
}
#define __temp_argmin(ami, arg, expr) __am_min, __am_old,
-#define __init_argmin(ami, arg, expr) (__g(mi) = 0) || (ami = 0)
+#define __init_argmin(ami, arg, expr) (__am_min = 0) || (ami = __nil)
#define __test_argmin(ami, arg, expr) 1
#define __prep_argmin(ami, arg, expr) ((__am_old = __am_min) || 1) && \
((__am_min = \
diff --git a/testcases-iter b/testcases-iter
index 6455fa6..48138c0 100644
--- a/testcases-iter
+++ b/testcases-iter
@@ -408,3 +408,20 @@ BEGIN {
8 4
9 5
10 5
+--
+19:
+$cppawk '
+#include <iter.h>
+
+BEGIN {
+ loop (while (0),
+ argmax (mx, x, sin(x)),
+ argmin (mi, x, sin(x)))
+ ; // empty
+
+ print mx == "" && mx != 0
+ print mi == "" && mi != 0
+}'
+:
+1
+1