Skip to content

Commit 948f6a1

Browse files
authored
fix typescript/54492: check if file rename changes extension (#200220)
check if file extension has been changed
1 parent b5b6a80 commit 948f6a1

File tree

1 file changed

+6
-2
lines changed
  • extensions/typescript-language-features/src/languageFeatures

1 file changed

+6
-2
lines changed

extensions/typescript-language-features/src/languageFeatures/rename.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class TypeScriptRenameProvider implements vscode.RenameProvider {
8585
}
8686

8787
if (renameInfo.fileToRename) {
88-
const edits = await this.renameFile(renameInfo.fileToRename, newName, token);
88+
const edits = await this.renameFile(renameInfo.fileToRename, renameInfo.fullDisplayName, newName, token);
8989
if (edits) {
9090
return edits;
9191
} else {
@@ -170,13 +170,17 @@ class TypeScriptRenameProvider implements vscode.RenameProvider {
170170

171171
private async renameFile(
172172
fileToRename: string,
173+
fullDisplayName: string,
173174
newName: string,
174175
token: vscode.CancellationToken,
175176
): Promise<vscode.WorkspaceEdit | undefined> {
176-
// Make sure we preserve file extension if none provided
177+
// Make sure we preserve file extension if extension is unchanged or none provided
177178
if (!path.extname(newName)) {
178179
newName += path.extname(fileToRename);
179180
}
181+
else if (path.extname(newName) === path.extname(fullDisplayName)) {
182+
newName = newName.slice(0, newName.length - path.extname(newName).length) + path.extname(fileToRename);
183+
}
180184

181185
const dirname = path.dirname(fileToRename);
182186
const newFilePath = path.join(dirname, newName);

0 commit comments

Comments
 (0)