diff options
author | Florian Klink <flokli@flokli.de> | 2024-01-23T13·34+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-01-25T11·37+0000 |
commit | 023e372583b7bcc71b5c301c49501cc72204068f (patch) | |
tree | 6ea7a216292fb4db2154285371535b714fff498d /tvix/eval/src/compiler | |
parent | e1d25891638597b0085033fd99814fce83fab4b9 (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')
-rw-r--r-- | tvix/eval/src/compiler/mod.rs | 14 |
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, ) |