diff --git a/crates/edit/src/json.rs b/crates/edit/src/json.rs index ccea0870739..6f308d074e9 100644 --- a/crates/edit/src/json.rs +++ b/crates/edit/src/json.rs @@ -452,7 +452,8 @@ impl<'a, 'i> Parser<'a, 'i> { if self.is_str("//") { self.pos += 2; - while self.pos < self.bytes.len() && self.bytes[self.pos] != b'\n' { + while self.pos < self.bytes.len() && !matches!(self.bytes[self.pos], b'\n' | b'\r') + { self.pos += 1; } } else if self.is_str("/*") { @@ -668,6 +669,16 @@ mod tests { assert_eq!(obj.get_number("b"), Some(2.0)); } + #[test] + fn test_line_comment_newlines() { + let scratch = scratch_arena(None); + for newline in ["\n", "\r\n", "\r"] { + let input = format!("{{// comment{newline}\"a\": 1}}"); + let value = parse(&scratch, &input).unwrap(); + assert_eq!(value.as_object().unwrap().get_number("a"), Some(1.0)); + } + } + #[test] fn test_trailing_comma() { let scratch = scratch_arena(None);