diff --git a/mesonbuild/ast/postprocess.py b/mesonbuild/ast/postprocess.py
index e9f2513..7acfc03 100644
--- a/mesonbuild/ast/postprocess.py
+++ b/mesonbuild/ast/postprocess.py
@@ -5,7 +5,7 @@
 # or an interpreter-based tool
 from __future__ import annotations
 
-from .visitor import AstVisitor
+from .visitor import AstVisitor, FullAstVisitor
 import typing as T
 
 if T.TYPE_CHECKING:
@@ -78,32 +78,41 @@
         node.ast_id = name + '#' + str(self.counter[name])
         self.counter[name] += 1
 
-class AstConditionLevel(AstVisitor):
+class AstConditionLevel(FullAstVisitor):
     def __init__(self) -> None:
         self.condition_level = 0
 
-    def visit_default_func(self, node: mparser.BaseNode) -> None:
+    def enter_node(self, node: mparser.BaseNode) -> None:
         node.condition_level = self.condition_level
 
     def visit_ForeachClauseNode(self, node: mparser.ForeachClauseNode) -> None:
-        self.visit_default_func(node)
-        self.condition_level += 1
+        self.enter_node(node)
+        node.foreach_.accept(self)
+        for varname in node.varnames:
+            varname.accept(self)
+        for comma in node.commas:
+            comma.accept(self)
+        node.colon.accept(self)
         node.items.accept(self)
+        self.condition_level += 1
         node.block.accept(self)
         self.condition_level -= 1
-
-    def visit_IfClauseNode(self, node: mparser.IfClauseNode) -> None:
-        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
+        node.endforeach.accept(self)
+        self.exit_node(node)
 
     def visit_IfNode(self, node: mparser.IfNode) -> None:
-        self.visit_default_func(node)
-        self.condition_level += 1
+        self.enter_node(node)
+        node.if_.accept(self)
         node.condition.accept(self)
+        self.condition_level += 1
         node.block.accept(self)
         self.condition_level -= 1
+        self.exit_node(node)
+
+    def visit_ElseNode(self, node: mparser.ElseNode) -> None:
+        self.enter_node(node)
+        node.else_.accept(self)
+        self.condition_level += 1
+        node.block.accept(self)
+        self.condition_level -= 1
+        self.exit_node(node)
