aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/ast/postprocess.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-03-04 01:48:58 +0200
committerGitHub <noreply@github.com>2019-03-04 01:48:58 +0200
commit0de4f199b3aa30939436742cfcd706412ea498e9 (patch)
tree9e8e3bae6cee8ce439febfd18a8d26c71eb54380 /mesonbuild/ast/postprocess.py
parent7f9fb6a08481c26698fb9c8ce4920c456e46bbbd (diff)
parent586ec5a28cc2ea854f726cb7a6075b0918595bf5 (diff)
downloadmeson-0de4f199b3aa30939436742cfcd706412ea498e9.zip
meson-0de4f199b3aa30939436742cfcd706412ea498e9.tar.gz
meson-0de4f199b3aa30939436742cfcd706412ea498e9.tar.bz2
Merge pull request #4949 from mensinda/introTargetNoBD
mintro: Introspect targets and deps without a build directory
Diffstat (limited to 'mesonbuild/ast/postprocess.py')
-rw-r--r--mesonbuild/ast/postprocess.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/mesonbuild/ast/postprocess.py b/mesonbuild/ast/postprocess.py
index e913b4f..8e8732f 100644
--- a/mesonbuild/ast/postprocess.py
+++ b/mesonbuild/ast/postprocess.py
@@ -84,3 +84,33 @@ class AstIDGenerator(AstVisitor):
self.counter[name] = 0
node.ast_id = name + '#' + str(self.counter[name])
self.counter[name] += 1
+
+class AstConditionLevel(AstVisitor):
+ def __init__(self):
+ self.condition_level = 0
+
+ def visit_default_func(self, node: mparser.BaseNode):
+ node.condition_level = self.condition_level
+
+ def visit_ForeachClauseNode(self, node: mparser.ForeachClauseNode):
+ self.visit_default_func(node)
+ self.condition_level += 1
+ node.items.accept(self)
+ node.block.accept(self)
+ self.condition_level -= 1
+
+ def visit_IfClauseNode(self, node: mparser.IfClauseNode):
+ self.visit_default_func(node)
+ for i in node.ifs:
+ i.accept(self)
+ if node.elseblock:
+ self.condition_level += 1
+ node.elseblock.accept(self)
+ self.condition_level -= 1
+
+ def visit_IfNode(self, node: mparser.IfNode):
+ self.visit_default_func(node)
+ self.condition_level += 1
+ node.condition.accept(self)
+ node.block.accept(self)
+ self.condition_level -= 1