From cc5be633f2ef2a93cba5e9fa781d4ec504cda4b1 Mon Sep 17 00:00:00 2001 From: overlookmotel Date: Sun, 10 Mar 2024 02:03:05 +0000 Subject: [PATCH] fix(ast): fix serializing rest elements (#2652) Fix a mistake I made in #2567. Length that `serialize_seq` is called with should only be `+1` if there is a rest element being added on the end. Makes no difference for serializing to JSON, as JSON serializer doesn't use the `len` value, but still better to get it right. --- crates/oxc_ast/src/serialize.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/oxc_ast/src/serialize.rs b/crates/oxc_ast/src/serialize.rs index 3c5dfd672..e74d89ac6 100644 --- a/crates/oxc_ast/src/serialize.rs +++ b/crates/oxc_ast/src/serialize.rs @@ -227,13 +227,15 @@ impl<'a, 'b, E, R> ElementsAndRest<'a, 'b, E, R> { impl<'a, 'b, E: Serialize, R: Serialize> Serialize for ElementsAndRest<'a, 'b, E, R> { fn serialize(&self, serializer: S) -> Result { - let mut seq = serializer.serialize_seq(Some(self.elements.len() + 1))?; - for element in self.elements { - seq.serialize_element(element)?; - } if let Some(rest) = self.rest { + let mut seq = serializer.serialize_seq(Some(self.elements.len() + 1))?; + for element in self.elements { + seq.serialize_element(element)?; + } seq.serialize_element(rest)?; + seq.end() + } else { + self.elements.serialize(serializer) } - seq.end() } }