@@ -32,6 +32,7 @@ namespace ts.codefix {
32
32
// Keys are import clause node IDs.
33
33
const addToExisting = createMap < { readonly importClause : ImportClause , defaultImport : string | undefined ; readonly namedImports : string [ ] , canUseTypeOnlyImport : boolean } > ( ) ;
34
34
const newImports = createMap < Mutable < ImportsCollection > > ( ) ;
35
+ let lastModuleSpecifier : string | undefined ;
35
36
36
37
eachDiagnostic ( context , errorCodes , diag => {
37
38
const info = getFixesInfo ( context , diag . code , diag . start ) ;
@@ -67,6 +68,7 @@ namespace ts.codefix {
67
68
let entry = newImports . get ( moduleSpecifier ) ;
68
69
if ( ! entry ) {
69
70
newImports . set ( moduleSpecifier , entry = { defaultImport : undefined , namedImports : [ ] , namespaceLikeImport : undefined } ) ;
71
+ lastModuleSpecifier = moduleSpecifier ;
70
72
}
71
73
switch ( importKind ) {
72
74
case ImportKind . Default :
@@ -101,7 +103,7 @@ namespace ts.codefix {
101
103
doAddExistingFix ( changes , sourceFile , importClause , defaultImport , namedImports , canUseTypeOnlyImport ) ;
102
104
} ) ;
103
105
newImports . forEach ( ( imports , moduleSpecifier ) => {
104
- addNewImports ( changes , sourceFile , moduleSpecifier , quotePreference , imports ) ;
106
+ addNewImports ( changes , sourceFile , moduleSpecifier , quotePreference , imports , /*blankLineBetween*/ lastModuleSpecifier === moduleSpecifier ) ;
105
107
} ) ;
106
108
} ) ) ;
107
109
} ,
@@ -547,7 +549,7 @@ namespace ts.codefix {
547
549
const { importKind, moduleSpecifier } = fix ;
548
550
addNewImports ( changes , sourceFile , moduleSpecifier , quotePreference , importKind === ImportKind . Default ? { defaultImport : symbolName , namedImports : emptyArray , namespaceLikeImport : undefined }
549
551
: 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 ) ;
551
553
return [ importKind === ImportKind . Default ? Diagnostics . Import_default_0_from_module_1 : Diagnostics . Import_0_from_module_1 , symbolName , moduleSpecifier ] ;
552
554
}
553
555
default :
@@ -608,21 +610,21 @@ namespace ts.codefix {
608
610
readonly name : string ;
609
611
} | undefined ;
610
612
}
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 {
612
614
const quotedModuleSpecifier = makeStringLiteral ( moduleSpecifier , quotePreference ) ;
613
615
if ( defaultImport !== undefined || namedImports . length ) {
614
616
insertImport ( changes , sourceFile ,
615
617
makeImport (
616
618
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 ) ;
618
620
}
619
621
if ( namespaceLikeImport ) {
620
622
insertImport (
621
623
changes ,
622
624
sourceFile ,
623
625
namespaceLikeImport . importKind === ImportKind . Equals ? createImportEqualsDeclaration ( /*decorators*/ undefined , /*modifiers*/ undefined , createIdentifier ( namespaceLikeImport . name ) , createExternalModuleReference ( quotedModuleSpecifier ) ) :
624
626
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 ) ;
626
628
}
627
629
}
628
630
0 commit comments