diff --git a/crates/oxc_prettier/src/lib.rs b/crates/oxc_prettier/src/lib.rs index cf7b358d8..fb81ad34a 100644 --- a/crates/oxc_prettier/src/lib.rs +++ b/crates/oxc_prettier/src/lib.rs @@ -153,10 +153,23 @@ impl<'a> Prettier<'a> { // idx = self.skip_inline_comment(idx); idx = self.skip_spaces(idx, /* backwards */ false); } - // idx = self.skip_trailing_comment(idx); + idx = self.skip_trailing_comment(idx); idx = self.skip_newline(idx, /* backwards */ false); idx.is_some_and(|idx| self.has_newline(idx, /* backwards */ false)) - // self.source_text[end as usize..].chars().nth(1).is_some_and(|c| c == '\n') + } + + fn skip_trailing_comment(&self, start_index: Option) -> Option { + let start_index = start_index?; + let mut chars = self.source_text[start_index as usize..].chars(); + let c = chars.next()?; + if c != '/' { + return Some(start_index); + } + let c = chars.next()?; + if c != '/' { + return Some(start_index); + } + self.skip_everything_but_new_line(Some(start_index), /* backwards */ false) } fn skip_to_line_end(&self, start_index: Option) -> Option { @@ -167,6 +180,14 @@ impl<'a> Prettier<'a> { self.skip(start_index, backwards, |c| matches!(c, ' ' | '\t')) } + fn skip_everything_but_new_line( + &self, + start_index: Option, + backwards: bool, + ) -> Option { + self.skip(start_index, backwards, |c| !is_line_terminator(c)) + } + fn skip(&self, start_index: Option, backwards: bool, f: F) -> Option where F: Fn(char) -> bool, diff --git a/crates/oxc_prettier/src/needs_parens.rs b/crates/oxc_prettier/src/needs_parens.rs index 082710b84..88adf7e52 100644 --- a/crates/oxc_prettier/src/needs_parens.rs +++ b/crates/oxc_prettier/src/needs_parens.rs @@ -219,6 +219,15 @@ impl<'a> Prettier<'a> { || self.should_wrap_function_for_export_default(); } } + AstKind::BinaryExpression(binary_expr) => { + if binary_expr.operator.is_relational() { + if let AstKind::UnaryExpression(unary_expr) = kind { + if binary_expr.left.span() == unary_expr.span { + return true; + } + } + } + } _ => {} } false diff --git a/tasks/prettier_conformance/prettier.snap.md b/tasks/prettier_conformance/prettier.snap.md index a23a545df..9c8b800f2 100644 --- a/tasks/prettier_conformance/prettier.snap.md +++ b/tasks/prettier_conformance/prettier.snap.md @@ -72,7 +72,6 @@ Compatibility: 212/561 (37.79%) * binary-expressions/arrow.js * binary-expressions/call.js * binary-expressions/comment.js -* binary-expressions/in_instanceof.js * binary-expressions/inline-jsx.js * binary-expressions/inline-object-array.js * binary-expressions/jsx_parent.js @@ -258,7 +257,6 @@ Compatibility: 212/561 (37.79%) * functional-composition/pipe-function-calls-with-comments.js * functional-composition/pipe-function-calls.js * functional-composition/ramda_compose.js -* functional-composition/ramda_pipe.js * functional-composition/redux_connect.js * functional-composition/reselect_createselector.js * functional-composition/rxjs_pipe.js