Skip to content

Commit 4766a2e

Browse files
authored
Fix overlapping changes when un-qualifying import use site within transformed export (microsoft#40987)
* Fix overlapping changes when un-qualifying import use site within transformed export * Break long line
1 parent f7212aa commit 4766a2e

File tree

4 files changed

+191
-74
lines changed

4 files changed

+191
-74
lines changed

src/services/codefixes/convertToAsyncFunction.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,26 @@ namespace ts.codefix {
199199
}
200200
});
201201

202-
return getSynthesizedDeepCloneWithRenames(nodeToRename, /*includeTrivia*/ true, identsToRenameMap, checker);
202+
return getSynthesizedDeepCloneWithReplacements(nodeToRename, /*includeTrivia*/ true, original => {
203+
if (isBindingElement(original) && isIdentifier(original.name) && isObjectBindingPattern(original.parent)) {
204+
const symbol = checker.getSymbolAtLocation(original.name);
205+
const renameInfo = symbol && identsToRenameMap.get(String(getSymbolId(symbol)));
206+
if (renameInfo && renameInfo.text !== (original.name || original.propertyName).getText()) {
207+
return factory.createBindingElement(
208+
original.dotDotDotToken,
209+
original.propertyName || original.name,
210+
renameInfo,
211+
original.initializer);
212+
}
213+
}
214+
else if (isIdentifier(original)) {
215+
const symbol = checker.getSymbolAtLocation(original);
216+
const renameInfo = symbol && identsToRenameMap.get(String(getSymbolId(symbol)));
217+
if (renameInfo) {
218+
return factory.createIdentifier(renameInfo.text);
219+
}
220+
}
221+
});
203222
}
204223

205224
function getNewNameIfConflict(name: Identifier, originalNames: ReadonlyESMap<string, Symbol[]>): SynthIdentifier {
@@ -289,7 +308,7 @@ namespace ts.codefix {
289308

290309
const tryStatement = factory.createTryStatement(tryBlock, catchClause, /*finallyBlock*/ undefined);
291310
const destructuredResult = prevArgName && varDeclIdentifier && isSynthBindingPattern(prevArgName)
292-
&& factory.createVariableStatement(/*modifiers*/ undefined, factory.createVariableDeclarationList([factory.createVariableDeclaration(getSynthesizedDeepCloneWithRenames(prevArgName.bindingPattern), /*exclamationToken*/ undefined, /*type*/ undefined, varDeclIdentifier)], NodeFlags.Const));
311+
&& factory.createVariableStatement(/*modifiers*/ undefined, factory.createVariableDeclarationList([factory.createVariableDeclaration(getSynthesizedDeepClone(prevArgName.bindingPattern), /*exclamationToken*/ undefined, /*type*/ undefined, varDeclIdentifier)], NodeFlags.Const));
293312
return compact([varDeclList, tryStatement, destructuredResult]);
294313
}
295314

0 commit comments

Comments
 (0)