@@ -1033,10 +1033,15 @@ fn gen_export_named_decl<'a>(node: &NamedExport<'a>, context: &mut Context<'a>)
10331033 }
10341034
10351035 let force_single_line = context. config . export_declaration_force_single_line && !contains_line_or_multiline_comment ( node. into ( ) , context. program ) ;
1036+
1037+ let force_multi_line = !force_single_line
1038+ && ( ( context. config . export_declaration_force_multi_line == ForceMultiLine :: Always )
1039+ || ( named_exports. len ( ) > 1 && context. config . export_declaration_force_multi_line == ForceMultiLine :: OnlyWhenMultiple ) ) ;
1040+
10361041 let should_single_line = force_single_line
10371042 || ( default_export. is_none ( )
10381043 && namespace_export. is_none ( )
1039- && ( named_exports . len ( ) <= 1 && !context . config . export_declaration_force_multi_line )
1044+ && !force_multi_line
10401045 && node. start_line_fast ( context. program ) == node. end_line_fast ( context. program ) ) ;
10411046
10421047 // generate
@@ -1218,10 +1223,14 @@ fn gen_import_decl<'a>(node: &ImportDecl<'a>, context: &mut Context<'a>) -> Prin
12181223 }
12191224
12201225 let force_single_line = context. config . import_declaration_force_single_line && !contains_line_or_multiline_comment ( node. into ( ) , context. program ) ;
1226+ let force_multi_line = !force_single_line
1227+ && ( ( context. config . import_declaration_force_multi_line == ForceMultiLine :: Always )
1228+ || ( named_imports. len ( ) > 1 && context. config . import_declaration_force_multi_line == ForceMultiLine :: OnlyWhenMultiple ) ) ;
1229+
12211230 let should_single_line = force_single_line
12221231 || ( default_import. is_none ( )
12231232 && namespace_import. is_none ( )
1224- && ( named_imports . len ( ) <= 1 && !context . config . import_declaration_force_multi_line )
1233+ && !force_multi_line
12251234 && node. start_line_fast ( context. program ) == node. end_line_fast ( context. program ) ) ;
12261235 let has_named_imports = !named_imports. is_empty ( ) || {
12271236 let from_keyword = context. token_finder . get_previous_token_if_from_keyword ( node. src ) ;
@@ -1467,7 +1476,7 @@ struct GenNamedImportOrExportSpecifierOptions<'a> {
14671476 parent : Node < ' a > ,
14681477 specifiers : Vec < Node < ' a > > ,
14691478 force_single_line : bool ,
1470- force_multi_line_specifiers : bool ,
1479+ force_multi_line_specifiers : ForceMultiLine ,
14711480}
14721481
14731482fn gen_named_import_or_export_specifiers < ' a > ( opts : GenNamedImportOrExportSpecifierOptions < ' a > , context : & mut Context < ' a > ) -> PrintItems {
@@ -1487,6 +1496,14 @@ fn gen_named_import_or_export_specifiers<'a>(opts: GenNamedImportOrExportSpecifi
14871496 context,
14881497 ) ;
14891498
1499+ fn get_force_multiline ( parent_decl : Node , context : & Context ) -> ForceMultiLine {
1500+ match parent_decl {
1501+ Node :: NamedExport ( _) => context. config . export_declaration_force_multi_line ,
1502+ Node :: ImportDecl ( _) => context. config . import_declaration_force_multi_line ,
1503+ _ => unreachable ! ( ) ,
1504+ }
1505+ }
1506+
14901507 fn get_trailing_commas ( parent_decl : Node , context : & Context ) -> TrailingCommas {
14911508 match parent_decl {
14921509 Node :: NamedExport ( _) => context. config . export_declaration_trailing_commas ,
0 commit comments