diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-04 01:48:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-04 01:48:58 +0200 |
commit | 0de4f199b3aa30939436742cfcd706412ea498e9 (patch) | |
tree | 9e8e3bae6cee8ce439febfd18a8d26c71eb54380 /mesonbuild/ast/postprocess.py | |
parent | 7f9fb6a08481c26698fb9c8ce4920c456e46bbbd (diff) | |
parent | 586ec5a28cc2ea854f726cb7a6075b0918595bf5 (diff) | |
download | meson-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.py | 30 |
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 |