diff --git a/apps/oxfmt/conformance/fixtures/edge-cases/js-in-vue/issue-20548.vue b/apps/oxfmt/conformance/fixtures/edge-cases/js-in-vue/issue-20548.vue new file mode 100644 index 0000000000000..78fce0a4975f1 --- /dev/null +++ b/apps/oxfmt/conformance/fixtures/edge-cases/js-in-vue/issue-20548.vue @@ -0,0 +1,10 @@ + diff --git a/apps/oxfmt/conformance/snapshots/conformance.snap.md b/apps/oxfmt/conformance/snapshots/conformance.snap.md index 598710e1f4098..3ab36ed6474e6 100644 --- a/apps/oxfmt/conformance/snapshots/conformance.snap.md +++ b/apps/oxfmt/conformance/snapshots/conformance.snap.md @@ -1,6 +1,6 @@ ## js-in-vue -### Option 1: 423/425 (99.53%) +### Option 1: 424/426 (99.53%) ```json {"printWidth":80} @@ -11,7 +11,7 @@ | [effects/common-ui/src/components/api-component/api-component.vue](diffs/js-in-vue/effects__common-ui__src__components__api-component__api-component.vue.md) | `() => {}` comma in generic param is removed even in .ts(x) file | | [vue/multiparser/lang-tsx.vue](diffs/js-in-vue/vue__multiparser__lang-tsx.vue.md) | `lang=tsx` is not supported | -### Option 2: 423/425 (99.53%) +### Option 2: 424/426 (99.53%) ```json {"printWidth":100,"vueIndentScriptAndStyle":true,"singleQuote":true} diff --git a/crates/oxc_formatter/src/print/arrow_function_expression.rs b/crates/oxc_formatter/src/print/arrow_function_expression.rs index 626f1bd8c176a..a945ce96fa540 100644 --- a/crates/oxc_formatter/src/print/arrow_function_expression.rs +++ b/crates/oxc_formatter/src/print/arrow_function_expression.rs @@ -678,7 +678,6 @@ fn format_signature<'a, 'b>( format_with(move |f| { let content = format_with(|f| { group(&format_args!( - maybe_space(!is_first_in_chain), arrow.r#async().then_some("async "), arrow.type_parameters(), arrow.params(), @@ -693,6 +692,7 @@ fn format_signature<'a, 'b>( if is_first_in_chain { write!(f, format_head); } else { + write!(f, [space()]); let mut buffer = RemoveSoftLinesBuffer::new(f); write!(buffer, format_head); } diff --git a/crates/oxc_formatter/src/print/class.rs b/crates/oxc_formatter/src/print/class.rs index 8eac1fabcdb53..eb2ad2346d2ed 100644 --- a/crates/oxc_formatter/src/print/class.rs +++ b/crates/oxc_formatter/src/print/class.rs @@ -385,12 +385,12 @@ impl<'a> Format<'a> for FormatClass<'a, '_> { }); let format_extends = - format_with(|f| write!(f, [space(), "extends", space(), &format_super])); + format_with(|f| write!(f, ["extends", space(), &format_super])); if group_mode { write!(f, [soft_line_break_or_space(), group(&format_extends)]); } else { - write!(f, format_extends); + write!(f, [space(), format_extends]); } } diff --git a/crates/oxc_formatter/src/print/mod.rs b/crates/oxc_formatter/src/print/mod.rs index a43b30c569aea..df9220fb9229c 100644 --- a/crates/oxc_formatter/src/print/mod.rs +++ b/crates/oxc_formatter/src/print/mod.rs @@ -1392,12 +1392,11 @@ impl<'a> FormatWrite<'a> for AstNode<'a, TSInterfaceDeclaration<'a>> { ] ); } else { - let format_extends = - format_with(|f| write!(f, [space(), "extends", space(), extends])); + let format_extends = format_with(|f| write!(f, ["extends", space(), extends])); if group_mode { write!(f, [soft_line_break_or_space(), group(&format_extends)]); } else { - write!(f, format_extends); + write!(f, [space(), format_extends]); } }