From ba628f6f90e7412245dcebdecd9cfa7e4bbf989c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 25 May 2020 12:12:13 +0200 Subject: Add support for value subscript after expansions Value subscript is only recognized in evaluation contexts (due to ambiguity with wildcard patterns; consider: $x[123].txt) and should be unseparated from the previous token. For example: x = ($y[1]) x = (($f ? $y : $z)[1]) x = ($identity($x)[$z]) --- libbuild2/variable.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libbuild2/variable.cxx') diff --git a/libbuild2/variable.cxx b/libbuild2/variable.cxx index d16fcb4..206eb54 100644 --- a/libbuild2/variable.cxx +++ b/libbuild2/variable.cxx @@ -491,7 +491,13 @@ namespace build2 { // May throw invalid_argument or out_of_range. // - return stoull (n.value); + size_t i; + uint64_t r (stoull (n.value, &i)); + + if (i == n.value.size ()) + return r; + + // Fall through. } catch (const std::exception&) { -- cgit v1.1