@@ -65,8 +65,8 @@ namespace ts.refactor {
65
65
return { error : getLocaleSpecificMessage ( Diagnostics . Could_not_find_export_statement ) } ;
66
66
}
67
67
68
- const exportingModuleSymbol = isSourceFile ( exportNode . parent ) ? exportNode . parent . symbol : exportNode . parent . parent . symbol ;
69
-
68
+ const checker = program . getTypeChecker ( ) ;
69
+ const exportingModuleSymbol = getExportingModuleSymbol ( exportNode , checker ) ;
70
70
const flags = getSyntacticModifierFlags ( exportNode ) || ( ( isExportAssignment ( exportNode ) && ! exportNode . isExportEquals ) ? ModifierFlags . ExportDefault : ModifierFlags . None ) ;
71
71
72
72
const wasDefault = ! ! ( flags & ModifierFlags . Default ) ;
@@ -75,7 +75,6 @@ namespace ts.refactor {
75
75
return { error : getLocaleSpecificMessage ( Diagnostics . This_file_already_has_a_default_export ) } ;
76
76
}
77
77
78
- const checker = program . getTypeChecker ( ) ;
79
78
const noSymbolError = ( id : Node ) =>
80
79
( isIdentifier ( id ) && checker . getSymbolAtLocation ( id ) ) ? undefined
81
80
: { error : getLocaleSpecificMessage ( Diagnostics . Can_only_convert_named_export ) } ;
@@ -165,6 +164,7 @@ namespace ts.refactor {
165
164
const checker = program . getTypeChecker ( ) ;
166
165
const exportSymbol = Debug . checkDefined ( checker . getSymbolAtLocation ( exportName ) , "Export name should resolve to a symbol" ) ;
167
166
FindAllReferences . Core . eachExportReference ( program . getSourceFiles ( ) , checker , cancellationToken , exportSymbol , exportingModuleSymbol , exportName . text , wasDefault , ref => {
167
+ if ( exportName === ref ) return ;
168
168
const importingSourceFile = ref . getSourceFile ( ) ;
169
169
if ( wasDefault ) {
170
170
changeDefaultToNamedImport ( importingSourceFile , ref , changes , exportName . text ) ;
@@ -262,4 +262,16 @@ namespace ts.refactor {
262
262
function makeExportSpecifier ( propertyName : string , name : string ) : ExportSpecifier {
263
263
return factory . createExportSpecifier ( /*isTypeOnly*/ false , propertyName === name ? undefined : factory . createIdentifier ( propertyName ) , factory . createIdentifier ( name ) ) ;
264
264
}
265
+
266
+ function getExportingModuleSymbol ( node : Node , checker : TypeChecker ) {
267
+ const parent = node . parent ;
268
+ if ( isSourceFile ( parent ) ) {
269
+ return parent . symbol ;
270
+ }
271
+ const symbol = parent . parent . symbol ;
272
+ if ( symbol . valueDeclaration && isExternalModuleAugmentation ( symbol . valueDeclaration ) ) {
273
+ return checker . getMergedSymbol ( symbol ) ;
274
+ }
275
+ return symbol ;
276
+ }
265
277
}
0 commit comments