From 86cdcdcf11982281aa286682faf604cff3b1c7d1 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 5 Apr 2016 11:29:58 +0200 Subject: Make name::pair char again The plan is to represent scope/target-qualified variables as ':'-style pairs. --- build2/variable.txx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'build2/variable.txx') diff --git a/build2/variable.txx b/build2/variable.txx index 721e3c0..bd7a18b 100644 --- a/build2/variable.txx +++ b/build2/variable.txx @@ -138,7 +138,18 @@ namespace build2 for (auto i (ns.begin ()); i != ns.end (); ++i) { name& n (*i); - name* r (n.pair ? &*++i : nullptr); + name* r (nullptr); + + if (n.pair) + { + r = &*++i; + + if (n.pair != '@') + fail << "unexpected pair style for " + << value_traits::value_type.name << " value " + << "'" << n << "'" << n.pair << "'" << *r << "' " + << "in variable " << var.name; + } try { @@ -279,6 +290,12 @@ namespace build2 name& r (*++i); // Got to have the second half of the pair. + if (l.pair != '@') + fail << "unexpected pair style for " + << value_traits>::value_type.name << " key-value " + << "'" << l << "'" << l.pair << "'" << r << "' " + << "in variable " << var.name; + try { K k (value_traits::convert (move (l), nullptr)); @@ -329,7 +346,7 @@ namespace build2 for (const auto& p: vm) { s.push_back (value_traits::reverse (p.first)); - s.back ().pair = true; + s.back ().pair = '@'; s.push_back (value_traits::reverse (p.second)); } -- cgit v1.1