@@ -133,7 +133,7 @@ namespace ts.refactor {
133
133
) {
134
134
const checker = program . getTypeChecker ( ) ;
135
135
const prologueDirectives = takeWhile ( oldFile . statements , isPrologueDirective ) ;
136
- if ( ! oldFile . externalModuleIndicator && ! oldFile . commonJsModuleIndicator ) {
136
+ if ( oldFile . externalModuleIndicator === undefined && oldFile . commonJsModuleIndicator === undefined && usage . oldImportsNeededByNewFile . size ( ) === 0 ) {
137
137
deleteMovedStatements ( oldFile , toMove . ranges , changes ) ;
138
138
return [ ...prologueDirectives , ...toMove . all ] ;
139
139
}
@@ -402,7 +402,13 @@ namespace ts.refactor {
402
402
switch ( name . kind ) {
403
403
case SyntaxKind . Identifier :
404
404
if ( isUnused ( name ) ) {
405
- changes . delete ( sourceFile , name ) ;
405
+ if ( varDecl . initializer && isRequireCall ( varDecl . initializer , /*requireStringLiteralLikeArgument*/ true ) ) {
406
+ changes . delete ( sourceFile ,
407
+ isVariableDeclarationList ( varDecl . parent ) && length ( varDecl . parent . declarations ) === 1 ? varDecl . parent . parent : varDecl ) ;
408
+ }
409
+ else {
410
+ changes . delete ( sourceFile , name ) ;
411
+ }
406
412
}
407
413
break ;
408
414
case SyntaxKind . ArrayBindingPattern :
@@ -641,10 +647,12 @@ namespace ts.refactor {
641
647
}
642
648
643
649
interface ReadonlySymbolSet {
650
+ size ( ) : number ;
644
651
has ( symbol : Symbol ) : boolean ;
645
652
forEach ( cb : ( symbol : Symbol ) => void ) : void ;
646
653
forEachEntry < T > ( cb : ( symbol : Symbol ) => T | undefined ) : T | undefined ;
647
654
}
655
+
648
656
class SymbolSet implements ReadonlySymbolSet {
649
657
private map = new Map < string , Symbol > ( ) ;
650
658
add ( symbol : Symbol ) : void {
@@ -667,6 +675,9 @@ namespace ts.refactor {
667
675
copyEntries ( this . map , clone . map ) ;
668
676
return clone ;
669
677
}
678
+ size ( ) {
679
+ return this . map . size ;
680
+ }
670
681
}
671
682
672
683
type TopLevelExpressionStatement = ExpressionStatement & { expression : BinaryExpression & { left : PropertyAccessExpression } } ; // 'exports.x = ...'
@@ -775,7 +786,8 @@ namespace ts.refactor {
775
786
if ( useEs6Exports ) {
776
787
return ! isExpressionStatement ( decl ) && hasSyntacticModifier ( decl , ModifierFlags . Export ) || ! ! ( name && sourceFile . symbol . exports ?. has ( name . escapedText ) ) ;
777
788
}
778
- return getNamesToExportInCommonJS ( decl ) . some ( name => sourceFile . symbol . exports ! . has ( escapeLeadingUnderscores ( name ) ) ) ;
789
+ return ! ! sourceFile . symbol && ! ! sourceFile . symbol . exports &&
790
+ getNamesToExportInCommonJS ( decl ) . some ( name => sourceFile . symbol . exports ! . has ( escapeLeadingUnderscores ( name ) ) ) ;
779
791
}
780
792
781
793
function addExport ( decl : TopLevelDeclarationStatement , useEs6Exports : boolean ) : readonly Statement [ ] | undefined {
0 commit comments