summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Weißmann <volker.weissmann@gmx.de>2025-03-12 20:42:34 +0100
committerDylan Baker <dylan@pnwbakers.com>2025-05-29 09:20:27 -0700
commitb80e7030c766f0561adaa90776f90745bb007d31 (patch)
treee8d987797c19150393d224b299ca3b46ffe2bfad
parent4bbbd33d641e8761244342dc850e1b0ff97002b7 (diff)
downloadmeson-b80e7030c766f0561adaa90776f90745bb007d31.tar.gz
Add AstInterpreter.nesting
The AstInterpreter now stores how deep into if/elif/else we are. This is currently dead code, but it will be read in future commits.
-rw-r--r--mesonbuild/ast/interpreter.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py
index b18bb5882..f3ed7eb55 100644
--- a/mesonbuild/ast/interpreter.py
+++ b/mesonbuild/ast/interpreter.py
@@ -96,6 +96,7 @@ class AstInterpreter(InterpreterBase):
def __init__(self, source_root: str, subdir: str, subproject: SubProject, subproject_dir: str, env: environment.Environment, visitors: T.Optional[T.List[AstVisitor]] = None):
super().__init__(source_root, subdir, subproject, subproject_dir, env)
self.visitors = visitors if visitors is not None else []
+ self.nesting: T.List[int] = []
self.assignments: T.Dict[str, BaseNode] = {}
self.assign_vals: T.Dict[str, T.Any] = {}
self.reverse_assignment: T.Dict[str, BaseNode] = {}
@@ -283,10 +284,13 @@ class AstInterpreter(InterpreterBase):
pass
def evaluate_if(self, node: IfClauseNode) -> None:
+ self.nesting.append(0)
for i in node.ifs:
self.evaluate_codeblock(i.block)
+ self.nesting[-1] += 1
if not isinstance(node.elseblock, EmptyNode):
self.evaluate_codeblock(node.elseblock.block)
+ self.nesting.pop()
def get_variable(self, varname: str) -> int:
return 0