From af4311ba98d40d7bdbabfbcd5d51784b2909bc17 Mon Sep 17 00:00:00 2001 From: Joscha Date: Tue, 22 Nov 2022 21:56:50 +0100 Subject: [PATCH] Remove named nils as early as possible --- src/desugar/lit.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/desugar/lit.rs b/src/desugar/lit.rs index f5942b5..3b6fd80 100644 --- a/src/desugar/lit.rs +++ b/src/desugar/lit.rs @@ -31,17 +31,17 @@ impl TableLitElem { impl TableLit { pub fn desugar(self) -> (Self, bool) { - let (elems, desugared) = self.0.desugar(|e| e.desugar()); - if desugared { - (elems.table_lit(), true) + let (elems, removed) = self.0.remove_map(|e| match e { + TableLitElem::Named { value, .. } if matches!(*value, Expr::Lit(Lit::Nil(_))) => { + Err(()) + } + e => Ok(e), + }); + if removed.is_empty() { + let (elems, desugared) = elems.desugar(|e| e.desugar()); + (elems.table_lit(), desugared) } else { - let (elems, removed) = elems.remove_map(|e| match e { - TableLitElem::Named { value, .. } if matches!(*value, Expr::Lit(Lit::Nil(_))) => { - Err(()) - } - e => Ok(e), - }); - (elems.table_lit(), !removed.is_empty()) + (elems.table_lit(), true) } } }