@@ -32,6 +32,7 @@ namespace ts.codefix {
3232 // Keys are import clause node IDs.
3333 const addToExisting = createMap < { readonly importClause : ImportClause , defaultImport : string | undefined ; readonly namedImports : string [ ] , canUseTypeOnlyImport : boolean } > ( ) ;
3434 const newImports = createMap < Mutable < ImportsCollection > > ( ) ;
35+ let lastModuleSpecifier : string | undefined ;
3536
3637 eachDiagnostic ( context , errorCodes , diag => {
3738 const info = getFixesInfo ( context , diag . code , diag . start ) ;
@@ -67,6 +68,7 @@ namespace ts.codefix {
6768 let entry = newImports . get ( moduleSpecifier ) ;
6869 if ( ! entry ) {
6970 newImports . set ( moduleSpecifier , entry = { defaultImport : undefined , namedImports : [ ] , namespaceLikeImport : undefined } ) ;
71+ lastModuleSpecifier = moduleSpecifier ;
7072 }
7173 switch ( importKind ) {
7274 case ImportKind . Default :
@@ -101,7 +103,7 @@ namespace ts.codefix {
101103 doAddExistingFix ( changes , sourceFile , importClause , defaultImport , namedImports , canUseTypeOnlyImport ) ;
102104 } ) ;
103105 newImports . forEach ( ( imports , moduleSpecifier ) => {
104- addNewImports ( changes , sourceFile , moduleSpecifier , quotePreference , imports ) ;
106+ addNewImports ( changes , sourceFile , moduleSpecifier , quotePreference , imports , /*blankLineBetween*/ lastModuleSpecifier === moduleSpecifier ) ;
105107 } ) ;
106108 } ) ) ;
107109 } ,
@@ -547,7 +549,7 @@ namespace ts.codefix {
547549 const { importKind, moduleSpecifier } = fix ;
548550 addNewImports ( changes , sourceFile , moduleSpecifier , quotePreference , importKind === ImportKind . Default ? { defaultImport : symbolName , namedImports : emptyArray , namespaceLikeImport : undefined }
549551 : importKind === ImportKind . Named ? { defaultImport : undefined , namedImports : [ symbolName ] , namespaceLikeImport : undefined }
550- : { defaultImport : undefined , namedImports : emptyArray , namespaceLikeImport : { importKind, name : symbolName } } ) ;
552+ : { defaultImport : undefined , namedImports : emptyArray , namespaceLikeImport : { importKind, name : symbolName } } , /*blankLineBetween*/ true ) ;
551553 return [ importKind === ImportKind . Default ? Diagnostics . Import_default_0_from_module_1 : Diagnostics . Import_0_from_module_1 , symbolName , moduleSpecifier ] ;
552554 }
553555 default :
@@ -608,21 +610,21 @@ namespace ts.codefix {
608610 readonly name : string ;
609611 } | undefined ;
610612 }
611- function addNewImports ( changes : textChanges . ChangeTracker , sourceFile : SourceFile , moduleSpecifier : string , quotePreference : QuotePreference , { defaultImport, namedImports, namespaceLikeImport } : ImportsCollection ) : void {
613+ function addNewImports ( changes : textChanges . ChangeTracker , sourceFile : SourceFile , moduleSpecifier : string , quotePreference : QuotePreference , { defaultImport, namedImports, namespaceLikeImport } : ImportsCollection , blankLineBetween : boolean ) : void {
612614 const quotedModuleSpecifier = makeStringLiteral ( moduleSpecifier , quotePreference ) ;
613615 if ( defaultImport !== undefined || namedImports . length ) {
614616 insertImport ( changes , sourceFile ,
615617 makeImport (
616618 defaultImport === undefined ? undefined : createIdentifier ( defaultImport ) ,
617- namedImports . map ( n => createImportSpecifier ( /*propertyName*/ undefined , createIdentifier ( n ) ) ) , moduleSpecifier , quotePreference ) ) ;
619+ namedImports . map ( n => createImportSpecifier ( /*propertyName*/ undefined , createIdentifier ( n ) ) ) , moduleSpecifier , quotePreference ) , /*blankLineBetween*/ blankLineBetween ) ;
618620 }
619621 if ( namespaceLikeImport ) {
620622 insertImport (
621623 changes ,
622624 sourceFile ,
623625 namespaceLikeImport . importKind === ImportKind . Equals ? createImportEqualsDeclaration ( /*decorators*/ undefined , /*modifiers*/ undefined , createIdentifier ( namespaceLikeImport . name ) , createExternalModuleReference ( quotedModuleSpecifier ) ) :
624626 namespaceLikeImport . importKind === ImportKind . ConstEquals ? createConstEqualsRequireDeclaration ( namespaceLikeImport . name , quotedModuleSpecifier ) :
625- createImportDeclaration ( /*decorators*/ undefined , /*modifiers*/ undefined , createImportClause ( /*name*/ undefined , createNamespaceImport ( createIdentifier ( namespaceLikeImport . name ) ) ) , quotedModuleSpecifier ) ) ;
627+ createImportDeclaration ( /*decorators*/ undefined , /*modifiers*/ undefined , createImportClause ( /*name*/ undefined , createNamespaceImport ( createIdentifier ( namespaceLikeImport . name ) ) ) , quotedModuleSpecifier ) , /*blankLineBetween*/ blankLineBetween ) ;
626628 }
627629 }
628630
0 commit comments