Skip to content

Commit 7824fbc

Browse files
authored
Merge pull request #30383 from Microsoft/fixFindAllRefsOfDefaultExport
Fix find all refs of default export
2 parents 8b04143 + b29ed70 commit 7824fbc

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

src/services/findAllReferences.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1196,7 +1196,9 @@ namespace ts.FindAllReferences.Core {
11961196

11971197
// For `export { foo as bar }`, rename `foo`, but not `bar`.
11981198
if (!isForRenameWithPrefixAndSuffixText(state.options) || alwaysGetReferences) {
1199-
const exportKind = referenceLocation.originalKeywordKind === SyntaxKind.DefaultKeyword ? ExportKind.Default : ExportKind.Named;
1199+
const isDefaultExport = referenceLocation.originalKeywordKind === SyntaxKind.DefaultKeyword
1200+
|| exportSpecifier.name.originalKeywordKind === SyntaxKind.DefaultKeyword;
1201+
const exportKind = isDefaultExport ? ExportKind.Default : ExportKind.Named;
12001202
const exportSymbol = Debug.assertDefined(exportSpecifier.symbol);
12011203
const exportInfo = Debug.assertDefined(getExportInfo(exportSymbol, exportKind, state.checker));
12021204
searchForImportsOfExport(referenceLocation, exportSymbol, exportInfo, state);

src/services/importTracker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ namespace ts.FindAllReferences {
269269
}
270270

271271
/**
272-
* `import x = require("./x") or `import * as x from "./x"`.
272+
* `import x = require("./x")` or `import * as x from "./x"`.
273273
* An `export =` may be imported by this syntax, so it may be a direct import.
274274
* If it's not a direct import, it will be in `indirectUsers`, so we don't have to do anything here.
275275
*/
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @Filename: f.ts
4+
////export { [|foo|] as [|{| "isWriteAccess": true, "isDefinition": true |}default|] };
5+
////function /*start*/[|{| "isWriteAccess": true, "isDefinition": true |}foo|](a: number, b: number) {
6+
//// return a + b;
7+
////}
8+
9+
// @Filename: b.ts
10+
////import [|{| "isWriteAccess": true, "isDefinition": true |}bar|] from "./f";
11+
////[|bar|](1, 2);
12+
13+
verify.noErrors();
14+
const [ foo0, foo1, foo2, bar0, bar1 ] = test.ranges();
15+
const fooGroup = { definition: "function foo(a: number, b: number): number", ranges: [foo0, foo2] };
16+
const exportDefaultGroup = { definition: "(alias) function foo(a: number, b: number): number\nexport default", ranges: [foo1] };
17+
const barGroup = { definition: "(alias) function bar(a: number, b: number): number\nimport bar", ranges: [bar0, bar1]};
18+
verify.referenceGroups("start", [fooGroup, exportDefaultGroup, barGroup]);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @Filename: f.ts
4+
////export { [|foo|] as [|{| "isWriteAccess": true, "isDefinition": true |}foo|] }
5+
////function /*start*/[|{| "isWriteAccess": true, "isDefinition": true |}foo|](a: number, b: number) { }
6+
7+
// @Filename: b.ts
8+
////import x = require("./f");
9+
////x.[|foo|](1, 2);
10+
11+
verify.noErrors();
12+
const [ foo0, foo1, foo2, foo3 ] = test.ranges();
13+
const fooGroup = { definition: "function foo(a: number, b: number): void", ranges: [foo0, foo2] };
14+
const exportFooGroup = { definition: "(alias) function foo(a: number, b: number): void\nexport foo", ranges: [foo1, foo3] };
15+
verify.referenceGroups("start", [fooGroup, exportFooGroup]);

0 commit comments

Comments
 (0)