From 27342e7a1066a3f1426a624a35e52c23bdedeed9 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 20 Oct 2022 20:38:40 +0300 Subject: Add support for pairs in script 'for x:...' loop --- libbuild2/script/parser.cxx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'libbuild2') diff --git a/libbuild2/script/parser.cxx b/libbuild2/script/parser.cxx index 2a213ab..bc433e4 100644 --- a/libbuild2/script/parser.cxx +++ b/libbuild2/script/parser.cxx @@ -2660,20 +2660,19 @@ namespace build2 size_t fli (li); iteration_index fi {1, ii}; + names& ns (val.as ()); - // @@ Handle pairs. - // - // Do we need to always lex the variable values (for-loop - // and var lines) pair-character aware? - // - // Can there be any harm if a value with pairs is - // substituted into the command line? - // - for (name& n: val.as ()) + for (auto ni (ns.begin ()), ne (ns.end ()); ni != ne; ++ni) { li = fli; - value v (names {move (n)}); // Untyped. + // Set the variable value. + // + bool pair (ni->pair); + names n; + n.push_back (move (*ni)); + if (pair) n.push_back (move (*++ni)); + value v (move (n)); // Untyped. if (etype != nullptr) typify (v, *etype, var); -- cgit v1.1