about summary refs log tree commit diff
path: root/tvix/eval/src/compiler/mod.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-01-23T13·34+0200
committerclbot <clbot@tvl.fyi>2024-01-25T11·37+0000
commit023e372583b7bcc71b5c301c49501cc72204068f (patch)
tree6ea7a216292fb4db2154285371535b714fff498d /tvix/eval/src/compiler/mod.rs
parente1d25891638597b0085033fd99814fce83fab4b9 (diff)
feat(tvix/eval): track pattern binding names r/7448
These need to be preserved at least for builtins.toXML.

Also, we incorrectly only wrote an <attrspat> in case ellipsis was true,
but that's not the case.

Change-Id: I6bff9c47c2922f878d5c43e48280cda9c9ddb692
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10686
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: aspen <root@gws.fyi>
Diffstat (limited to 'tvix/eval/src/compiler/mod.rs')
-rw-r--r--tvix/eval/src/compiler/mod.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/tvix/eval/src/compiler/mod.rs b/tvix/eval/src/compiler/mod.rs
index 4bb734290c3e..53a99a453d9e 100644
--- a/tvix/eval/src/compiler/mod.rs
+++ b/tvix/eval/src/compiler/mod.rs
@@ -973,9 +973,16 @@ impl Compiler<'_> {
     ///    cases.
     fn compile_param_pattern(&mut self, pattern: &ast::Pattern) -> (Formals, CodeIdx) {
         let span = self.span_for(pattern);
-        let set_idx = match pattern.pat_bind() {
-            Some(name) => self.declare_local(&name, name.ident().unwrap().to_string()),
-            None => self.scope_mut().declare_phantom(span, true),
+
+        let (set_idx, pat_bind_name) = match pattern.pat_bind() {
+            Some(name) => {
+                let pat_bind_name = name.ident().unwrap().to_string();
+                (
+                    self.declare_local(&name, pat_bind_name.clone()),
+                    Some(pat_bind_name),
+                )
+            }
+            None => (self.scope_mut().declare_phantom(span, true), None),
         };
 
         // At call time, the attribute set is already at the top of the stack.
@@ -1126,6 +1133,7 @@ impl Compiler<'_> {
                 arguments,
                 ellipsis,
                 span,
+                name: pat_bind_name,
             }),
             throw_idx,
         )