Skip to content

Commit 9a2938c

Browse files
author
Andy Hanson
committed
When renaming module, ensure rename span is just the last component of the path
1 parent a57467a commit 9a2938c

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

src/services/rename.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ namespace ts.Rename {
4444
const withoutIndex = node.text.endsWith("/index") || node.text.endsWith("/index.js") ? undefined : tryRemoveSuffix(removeFileExtension(moduleSourceFile.fileName), "/index");
4545
const name = withoutIndex === undefined ? moduleSourceFile.fileName : withoutIndex;
4646
const kind = withoutIndex === undefined ? ScriptElementKind.moduleElement : ScriptElementKind.directory;
47+
const indexAfterLastSlash = node.text.lastIndexOf("/") + 1; // If no slash, this is 0.
48+
// + 1 to account for the quote character.
49+
const triggerSpan = createTextSpan(node.getStart(sourceFile) + 1 + indexAfterLastSlash, node.text.length - indexAfterLastSlash);
4750
return {
4851
canRename: true,
4952
fileToRename: name,
@@ -52,7 +55,7 @@ namespace ts.Rename {
5255
localizedErrorMessage: undefined,
5356
fullDisplayName: name,
5457
kindModifiers: ScriptElementKindModifier.none,
55-
triggerSpan: createTriggerSpanForNode(node, sourceFile),
58+
triggerSpan,
5659
};
5760
}
5861

tests/cases/fourslash/findAllRefs_importType_exportEquals.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
////export = [|T|];
99

1010
// @Filename: /b.ts
11-
////const x: import("[|./a|]") = 0;
12-
////const y: import("[|./a|]").U = "";
11+
////const x: import("[|./[|a|]|]") = 0;
12+
////const y: import("[|./[|a|]|]").U = "";
1313

1414
verify.noErrors();
1515

16-
const [r0, r1, r2, r3, r4] = test.ranges();
16+
const [r0, r1, r2, r3, r3b, r4, r4b] = test.ranges();
1717
verify.referenceGroups(r0, [{ definition: "type T = number\nnamespace T", ranges: [r0, r2, r3] }]);
1818
verify.referenceGroups(r1, [{ definition: "namespace T", ranges: [r1, r2] }]);
1919
verify.referenceGroups(r2, [{ definition: "type T = number\nnamespace T", ranges: [r0, r1, r2, r3] }]);
@@ -25,7 +25,7 @@ verify.referenceGroups([r3, r4], [
2525
verify.renameLocations(r0, [r0, r2]);
2626
verify.renameLocations(r1, [r1, r2]);
2727
verify.renameLocations(r2, [r0, r1, r2]);
28-
for (const range of [r3, r4]) {
28+
for (const range of [r3b, r4b]) {
2929
goTo.rangeStart(range);
3030
verify.renameInfoSucceeded(/*displayName*/ "/a.ts", /*fullDisplayName*/ "/a.ts", /*kind*/ "module", /*kindModifiers*/ "", /*fileToRename*/ "/a.ts", range);
3131
}

tests/cases/fourslash/renameImport.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
////export const x = 0;
1010

1111
// @Filename: /b.ts
12-
////import * as a from "[|./a|]";
13-
////import a2 = require("[|./a|]");
14-
////import * as dir from "[|{| "target": "dir" |}./dir|]";
15-
////import * as dir2 from "[|{| "target": "dir/index" |}./dir/index|]";
12+
////import * as a from "./[|a|]";
13+
////import a2 = require("./[|a|]");
14+
////import * as dir from "./[|{| "target": "dir" |}dir|]";
15+
////import * as dir2 from "./dir/[|{| "target": "dir/index" |}index|]";
1616

1717
// @Filename: /c.js
18-
////const a = require("[|./a|]");
18+
////const a = require("./[|a|]");
1919

2020
verify.noErrors();
2121
goTo.eachRange(range => {

0 commit comments

Comments
 (0)