Skip to content

Commit 3865e71

Browse files
Merge pull request microsoft#6797 from Microsoft/weReallyNeedANewSyntaxKindForTheseExports
Allow 'export default's in JS files without incorrect error
2 parents a4af38a + abf9239 commit 3865e71

6 files changed

Lines changed: 32 additions & 6 deletions

File tree

src/compiler/program.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,8 +734,11 @@ namespace ts {
734734
diagnostics.push(createDiagnosticForNode(node, Diagnostics.import_can_only_be_used_in_a_ts_file));
735735
return true;
736736
case SyntaxKind.ExportAssignment:
737-
diagnostics.push(createDiagnosticForNode(node, Diagnostics.export_can_only_be_used_in_a_ts_file));
738-
return true;
737+
if ((<ExportAssignment>node).isExportEquals) {
738+
diagnostics.push(createDiagnosticForNode(node, Diagnostics.export_can_only_be_used_in_a_ts_file));
739+
return true;
740+
}
741+
break;
739742
case SyntaxKind.ClassDeclaration:
740743
let classDeclaration = <ClassDeclaration>node;
741744
if (checkModifiers(classDeclaration.modifiers) ||
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile01.js' because it would overwrite input file.
2+
3+
4+
!!! error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile01.js' because it would overwrite input file.
5+
==== tests/cases/conformance/salsa/myFile01.js (0 errors) ====
6+
7+
export default "hello";
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile02.js' because it would overwrite input file.
2+
3+
4+
!!! error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile02.js' because it would overwrite input file.
5+
==== tests/cases/conformance/salsa/myFile02.js (0 errors) ====
6+
7+
export default "hello";
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
tests/cases/compiler/a.js(1,22): error TS2528: A module cannot have multiple default exports.
22
tests/cases/compiler/a.js(3,1): error TS2528: A module cannot have multiple default exports.
3-
tests/cases/compiler/a.js(3,1): error TS8003: 'export=' can only be used in a .ts file.
43
tests/cases/compiler/a.js(3,16): error TS1109: Expression expected.
54

65

7-
==== tests/cases/compiler/a.js (4 errors) ====
6+
==== tests/cases/compiler/a.js (3 errors) ====
87
export default class a {
98
~
109
!!! error TS2528: A module cannot have multiple default exports.
1110
}
1211
export default var a = 10;
1312
~~~~~~~~~~~~~~
1413
!!! error TS2528: A module cannot have multiple default exports.
15-
~~~~~~~~~~~~~~
16-
!!! error TS8003: 'export=' can only be used in a .ts file.
1714
~~~
1815
!!! error TS1109: Expression expected.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// @allowJS: true
2+
// @target: es3
3+
// @module: commonjs
4+
5+
// @filename: myFile01.js
6+
export default "hello";
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// @allowJS: true
2+
// @target: es2015
3+
// @module: es2015
4+
5+
// @filename: myFile02.js
6+
export default "hello";

0 commit comments

Comments
 (0)