You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by no...@apache.org on 2020/12/29 12:48:08 UTC

[buildstream] 15/16: _variables.pyx: Restore the calling node context in _expand_value_expression()

This is an automated email from the ASF dual-hosted git repository.

not-in-ldap pushed a commit to branch tristan/variables-refactor
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 056608990f7c541e4aaca31798d7e9ef16f58af7
Author: Tristan van Berkom <tr...@codethink.co.uk>
AuthorDate: Sat Jul 18 16:33:56 2020 +0900

    _variables.pyx: Restore the calling node context in _expand_value_expression()
    
    This will be required in the slower algorithm with error reporting, and
    is already used to fix error reporting for references to undefined variables
    in toplevel variable substitutions.
---
 src/buildstream/_variables.pyx | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/buildstream/_variables.pyx b/src/buildstream/_variables.pyx
index 53a5696..a8eebb4 100644
--- a/src/buildstream/_variables.pyx
+++ b/src/buildstream/_variables.pyx
@@ -196,7 +196,7 @@ cdef class Variables:
     # Substitutes any variables in 'string' and returns the result.
     #
     # Args:
-    #    (ScalarNode): The ScalarNode to substitute variables in
+    #    node (ScalarNode): The ScalarNode to substitute variables in
     #
     # Returns:
     #    (str): The new string with any substitutions made
@@ -207,7 +207,7 @@ cdef class Variables:
     #
     cpdef str subst(self, ScalarNode node):
         value_expression = _parse_value_expression(node.as_str())
-        return self._expand_value_expression(value_expression)
+        return self._expand_value_expression(value_expression, node)
 
     #################################################################
     #                          Private API                          #
@@ -316,11 +316,11 @@ cdef class Variables:
 
     # _expand_value_expression()
     #
-    # Helper to expand a given top level expansion string tuple in the context
-    # of the given dictionary of expansion strings.
+    # Expands a given top level expansion string.
     #
     # Args:
     #     value_expression (list): The parsed value expression to be expanded
+    #     node (ScalarNode): The toplevel ScalarNode who is asking for an expansion
     #
     # Returns:
     #     (str): The expanded value expression
@@ -329,7 +329,7 @@ cdef class Variables:
     #     KeyError, if any expansion is missing
     #     RecursionError, if recursion required for evaluation is too deep
     #
-    cdef str _expand_value_expression(self, list value_expression):
+    cdef str _expand_value_expression(self, list value_expression, ScalarNode node):
         try:
             return self._fast_expand_value_expression(value_expression)
         except (KeyError, RecursionError):
@@ -343,7 +343,8 @@ cdef class Variables:
                     unmatched.append(var)
 
             if unmatched:
-                message = "Unresolved variable{}: {}".format(
+                message = "{}: Unresolved variable{}: {}".format(
+                    node.get_provenance(),
                     "s" if len(unmatched) > 1 else "",
                     ", ".join(unmatched)
                 )