about summary refs log tree commit diff
path: root/tvix/eval/src/compiler/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/eval/src/compiler/mod.rs')
-rw-r--r--tvix/eval/src/compiler/mod.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/tvix/eval/src/compiler/mod.rs b/tvix/eval/src/compiler/mod.rs
index 55b8d960a9..21f131e454 100644
--- a/tvix/eval/src/compiler/mod.rs
+++ b/tvix/eval/src/compiler/mod.rs
@@ -552,10 +552,11 @@ impl Compiler<'_> {
         self.patch_jump(else_idx); // patch jump *over* else body
     }
 
-    fn compile_recursive_scope<N>(&mut self, slot: LocalIdx, rec_attrs: bool, node: &N)
+    fn compile_recursive_scope<N>(&mut self, slot: LocalIdx, rec_attrs: bool, node: &N) -> usize
     where
         N: ToSpan + ast::HasEntry,
     {
+        let mut count = 0;
         self.scope_mut().begin_scope();
 
         // First pass to find all plain inherits (if they are not useless).
@@ -588,6 +589,8 @@ impl Compiler<'_> {
                             }
                         };
 
+                        count += 1;
+
                         // If the identifier resolves statically in a
                         // `let`, it has precedence over dynamic
                         // bindings, and the inherit is useless.
@@ -625,6 +628,7 @@ impl Compiler<'_> {
                             }
                         };
 
+                        count += 1;
                         inherit_froms.push((from.expr().unwrap(), name, self.span_for(&attr)));
                     }
                 }
@@ -632,7 +636,7 @@ impl Compiler<'_> {
         }
 
         // Data structures to track the bindings observed in the
-        // second path, and forward the information needed to compile
+        // second pass, and forward the information needed to compile
         // their value.
         enum BindingKind {
             InheritFrom {
@@ -689,6 +693,8 @@ impl Compiler<'_> {
 
         // Declare all regular bindings
         for entry in node.attrpath_values() {
+            count += 1;
+
             let mut path = match self.normalise_ident_path(entry.attrpath().unwrap().attrs()) {
                 Ok(p) => p,
                 Err(err) => {
@@ -773,6 +779,8 @@ impl Compiler<'_> {
                 self.push_op(OpCode::OpFinalise(stack_idx), node);
             }
         }
+
+        count
     }
 
     /// Compile a standard `let ...; in ...` expression.