Skip to content

Commit 022516e

Browse files
authored
Suppress verbatimModuleSyntax error on ambient export default (microsoft#52414)
1 parent 43ecac8 commit 022516e

11 files changed

+72
-4
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43901,6 +43901,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4390143901
}
4390243902

4390343903
const isIllegalExportDefaultInCJS = !node.isExportEquals &&
43904+
!(node.flags & NodeFlags.Ambient) &&
4390443905
compilerOptions.verbatimModuleSyntax &&
4390543906
(moduleKind === ModuleKind.CommonJS || getSourceFileOfNode(node).impliedNodeFormat === ModuleKind.CommonJS);
4390643907

tests/baselines/reference/verbatimModuleSyntaxRestrictionsCJS.errors.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/decl.d.ts(2,1): error TS1286: ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled.
21
/main.ts(1,8): error TS1286: ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled.
32
/main.ts(2,13): error TS1286: ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled.
43
/main.ts(3,10): error TS1286: ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled.
@@ -12,13 +11,17 @@
1211
/main7.ts(2,1): error TS1286: ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled.
1312

1413

15-
==== /decl.d.ts (1 errors) ====
14+
==== /decl.d.ts (0 errors) ====
1615
declare function esmy(): void;
1716
export default esmy;
18-
~~~~~~~~~~~~~~~~~~~~
19-
!!! error TS1286: ESM syntax is not allowed in a CommonJS module when 'verbatimModuleSyntax' is enabled.
2017
export declare function funciton(): void;
2118

19+
==== /ambient.d.ts (0 errors) ====
20+
declare module "ambient" {
21+
const _default: number;
22+
export default _default;
23+
}
24+
2225
==== /main.ts (6 errors) ====
2326
import esmy from "./decl"; // error
2427
~~~~

tests/baselines/reference/verbatimModuleSyntaxRestrictionsCJS.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ declare function esmy(): void;
55
export default esmy;
66
export declare function funciton(): void;
77

8+
//// [ambient.d.ts]
9+
declare module "ambient" {
10+
const _default: number;
11+
export default _default;
12+
}
13+
814
//// [main.ts]
915
import esmy from "./decl"; // error
1016
import * as esmy2 from "./decl"; // error

tests/baselines/reference/verbatimModuleSyntaxRestrictionsCJS.symbols

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,17 @@ export default esmy;
88
export declare function funciton(): void;
99
>funciton : Symbol(funciton, Decl(decl.d.ts, 1, 20))
1010

11+
=== /ambient.d.ts ===
12+
declare module "ambient" {
13+
>"ambient" : Symbol("ambient", Decl(ambient.d.ts, 0, 0))
14+
15+
const _default: number;
16+
>_default : Symbol(_default, Decl(ambient.d.ts, 1, 9))
17+
18+
export default _default;
19+
>_default : Symbol(_default, Decl(ambient.d.ts, 1, 9))
20+
}
21+
1122
=== /main.ts ===
1223
import esmy from "./decl"; // error
1324
>esmy : Symbol(esmy, Decl(main.ts, 0, 6))

tests/baselines/reference/verbatimModuleSyntaxRestrictionsCJS.types

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,17 @@ export default esmy;
88
export declare function funciton(): void;
99
>funciton : () => void
1010

11+
=== /ambient.d.ts ===
12+
declare module "ambient" {
13+
>"ambient" : typeof import("ambient")
14+
15+
const _default: number;
16+
>_default : number
17+
18+
export default _default;
19+
>_default : number
20+
}
21+
1122
=== /main.ts ===
1223
import esmy from "./decl"; // error
1324
>esmy : () => void

tests/baselines/reference/verbatimModuleSyntaxRestrictionsESM(esmoduleinterop=false).errors.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
declare class CJSy {}
1818
export = CJSy;
1919

20+
==== /ambient.d.ts (0 errors) ====
21+
declare module "ambient" {
22+
const _export: number;
23+
export = _export;
24+
}
25+
2026
==== /types.ts (0 errors) ====
2127
interface Typey {}
2228
export type { Typey };

tests/baselines/reference/verbatimModuleSyntaxRestrictionsESM(esmoduleinterop=false).js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
declare class CJSy {}
55
export = CJSy;
66

7+
//// [ambient.d.ts]
8+
declare module "ambient" {
9+
const _export: number;
10+
export = _export;
11+
}
12+
713
//// [types.ts]
814
interface Typey {}
915
export type { Typey };

tests/baselines/reference/verbatimModuleSyntaxRestrictionsESM(esmoduleinterop=true).errors.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
declare class CJSy {}
1414
export = CJSy;
1515

16+
==== /ambient.d.ts (0 errors) ====
17+
declare module "ambient" {
18+
const _export: number;
19+
export = _export;
20+
}
21+
1622
==== /types.ts (0 errors) ====
1723
interface Typey {}
1824
export type { Typey };

tests/baselines/reference/verbatimModuleSyntaxRestrictionsESM(esmoduleinterop=true).js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
declare class CJSy {}
55
export = CJSy;
66

7+
//// [ambient.d.ts]
8+
declare module "ambient" {
9+
const _export: number;
10+
export = _export;
11+
}
12+
713
//// [types.ts]
814
interface Typey {}
915
export type { Typey };

tests/cases/conformance/externalModules/verbatimModuleSyntaxRestrictionsCJS.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ declare function esmy(): void;
99
export default esmy;
1010
export declare function funciton(): void;
1111

12+
// @Filename: /ambient.d.ts
13+
declare module "ambient" {
14+
const _default: number;
15+
export default _default;
16+
}
17+
1218
// @Filename: /main.ts
1319
import esmy from "./decl"; // error
1420
import * as esmy2 from "./decl"; // error

tests/cases/conformance/externalModules/verbatimModuleSyntaxRestrictionsESM.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88
declare class CJSy {}
99
export = CJSy;
1010

11+
// @Filename: /ambient.d.ts
12+
declare module "ambient" {
13+
const _export: number;
14+
export = _export;
15+
}
16+
1117
// @Filename: /types.ts
1218
interface Typey {}
1319
export type { Typey };

0 commit comments

Comments
 (0)