From 023e372583b7bcc71b5c301c49501cc72204068f Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Tue, 23 Jan 2024 15:34:38 +0200 Subject: feat(tvix/eval): track pattern binding names These need to be preserved at least for builtins.toXML. Also, we incorrectly only wrote an 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 Reviewed-by: aspen --- tvix/eval/src/builtins/to_xml.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'tvix/eval/src/builtins/to_xml.rs') diff --git a/tvix/eval/src/builtins/to_xml.rs b/tvix/eval/src/builtins/to_xml.rs index 250891b60d99..f23cb22db3d9 100644 --- a/tvix/eval/src/builtins/to_xml.rs +++ b/tvix/eval/src/builtins/to_xml.rs @@ -90,15 +90,22 @@ fn value_variant_to_xml(w: &mut EventWriter, value: &Value) -> Resu match &c.lambda.formals { Some(formals) => { + let mut attrspat = XmlEvent::start_element("attrspat"); if formals.ellipsis { - w.write(XmlEvent::start_element("attrspat").attr("ellipsis", "1"))?; - w.write(XmlEvent::end_element())?; + attrspat = attrspat.attr("ellipsis", "1"); + } + if let Some(ref name) = &formals.name { + attrspat = attrspat.attr("name", name.as_str()); } + w.write(attrspat)?; + for arg in formals.arguments.iter() { w.write(XmlEvent::start_element("attr").attr("name", arg.0.as_str()))?; w.write(XmlEvent::end_element())?; } + + w.write(XmlEvent::end_element())?; } None => { // TODO(tazjin): tvix does not currently persist function -- cgit 1.4.1