aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/variable.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2024-09-25 13:40:11 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2024-09-25 13:40:11 +0200
commitabcd9e4dcd17fe4bd50bc1d48ceccf6a3894986d (patch)
tree38d24b2580b864af04a3b123b3d1448370cd563a /libbuild2/variable.cxx
parent21bd200819d14f5bba18c2a87cccc18743cd7fde (diff)
Use type-aware iteration in script for-loop (GH issue #436)HEADmaster
Diffstat (limited to 'libbuild2/variable.cxx')
-rw-r--r--libbuild2/variable.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/libbuild2/variable.cxx b/libbuild2/variable.cxx
index fb9e840..0ec23d3 100644
--- a/libbuild2/variable.cxx
+++ b/libbuild2/variable.cxx
@@ -2122,9 +2122,9 @@ namespace build2
return r;
}
- static void
+ static bool
json_iterate (const value& val,
- const function<void (value&&, bool first)>& f)
+ const function<bool (value&&, bool first)>& f)
{
// Implement in terms of subscript for consistency (in particular,
// iterating over simple values like number, string).
@@ -2136,8 +2136,11 @@ namespace build2
if (!e.second)
break;
- f (move (e.first), i == 0);
+ if (!f (move (e.first), i == 0))
+ return false;
}
+
+ return true;
}
const json_value value_traits<json_value>::empty_instance;