Skip to content

Commit a4614ed

Browse files
author
Andy Hanson
committed
Add test for using export = with --allowSyntheticDefaultExports
1 parent ecbbd2a commit a4614ed

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/services/importTracker.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ namespace ts.FindAllReferences {
180180
* But re-exports will be placed in 'singleReferences' since they cannot be locally referenced.
181181
*/
182182
function getSearchesFromDirectImports(directImports: Importer[], exportSymbol: Symbol, exportKind: ExportKind, checker: TypeChecker, isForRename: boolean): Pick<ImportsResult, "importSearches" | "singleReferences"> {
183-
const exportName = exportKind === ExportKind.Default ? "default" : exportSymbol.escapedName;
183+
// Use name of "default" even in `export =` case because we may have allowSyntheticDefaultImports
184+
const exportName = exportKind !== ExportKind.Named ? "default" : exportSymbol.escapedName;
184185
const importSearches: Array<[Identifier, Symbol]> = [];
185186
const singleReferences: Identifier[] = [];
186187
function addSearch(location: Identifier, symbol: Symbol): void {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @allowSyntheticDefaultImports: true
4+
5+
// @Filename: /export.ts
6+
////const [|{| "isWriteAccess": true, "isDefinition": true |}foo|] = 1;
7+
////export = [|foo|];
8+
9+
// @Filename: /re-export.ts
10+
////export { [|{| "isWriteAccess": true, "isDefinition": true |}default|] } from "./export";
11+
12+
// @Filename: /re-export-dep.ts
13+
////import [|{| "isWriteAccess": true, "isDefinition": true |}fooDefault|] from "./re-export";
14+
15+
verify.noErrors();
16+
17+
const [r0, r1, r2, r3] = test.ranges();
18+
verify.referenceGroups([r0, r1], [
19+
{ definition: "const foo: 1", ranges: [r0, r1] },
20+
{ definition: "import default", ranges: [r2], },
21+
{ definition: "import fooDefault", ranges: [r3] },
22+
]);
23+
verify.referenceGroups(r2, [
24+
{ definition: "import default", ranges: [r2] },
25+
{ definition: "import fooDefault", ranges: [r3] },
26+
{ definition: "const foo: 1", ranges: [r0, r1] },
27+
]);
28+
verify.referenceGroups(r3, [
29+
{ definition: "import fooDefault", ranges: [r3] },
30+
{ definition: "import default", ranges: [r2] },
31+
{ definition: "const foo: 1", ranges: [r0, r1] },
32+
]);

0 commit comments

Comments
 (0)