diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 8ec821cb66..9a06a49370 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1071,8 +1071,11 @@ namespace ts { diagnostics.push(createDiagnosticForNode(node, Diagnostics.import_can_only_be_used_in_a_ts_file)); return true; case SyntaxKind.ExportAssignment: - diagnostics.push(createDiagnosticForNode(node, Diagnostics.export_can_only_be_used_in_a_ts_file)); - return true; + if ((node).isExportEquals) { + diagnostics.push(createDiagnosticForNode(node, Diagnostics.export_can_only_be_used_in_a_ts_file)); + return true; + } + break; case SyntaxKind.ClassDeclaration: let classDeclaration = node; if (checkModifiers(classDeclaration.modifiers) || diff --git a/tests/baselines/reference/exportDefaultInJsFile01.errors.txt b/tests/baselines/reference/exportDefaultInJsFile01.errors.txt new file mode 100644 index 0000000000..34035e1e14 --- /dev/null +++ b/tests/baselines/reference/exportDefaultInJsFile01.errors.txt @@ -0,0 +1,7 @@ +error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile01.js' because it would overwrite input file. + + +!!! error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile01.js' because it would overwrite input file. +==== tests/cases/conformance/salsa/myFile01.js (0 errors) ==== + + export default "hello"; \ No newline at end of file diff --git a/tests/baselines/reference/exportDefaultInJsFile02.errors.txt b/tests/baselines/reference/exportDefaultInJsFile02.errors.txt new file mode 100644 index 0000000000..5e17306e06 --- /dev/null +++ b/tests/baselines/reference/exportDefaultInJsFile02.errors.txt @@ -0,0 +1,7 @@ +error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile02.js' because it would overwrite input file. + + +!!! error TS5055: Cannot write file 'tests/cases/conformance/salsa/myFile02.js' because it would overwrite input file. +==== tests/cases/conformance/salsa/myFile02.js (0 errors) ==== + + export default "hello"; \ No newline at end of file diff --git a/tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt b/tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt index 733f66922a..05fecf03d3 100644 --- a/tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt +++ b/tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt @@ -1,10 +1,9 @@ tests/cases/compiler/a.js(1,22): error TS2528: A module cannot have multiple default exports. tests/cases/compiler/a.js(3,1): error TS2528: A module cannot have multiple default exports. -tests/cases/compiler/a.js(3,1): error TS8003: 'export=' can only be used in a .ts file. tests/cases/compiler/a.js(3,16): error TS1109: Expression expected. -==== tests/cases/compiler/a.js (4 errors) ==== +==== tests/cases/compiler/a.js (3 errors) ==== export default class a { ~ !!! error TS2528: A module cannot have multiple default exports. @@ -12,7 +11,5 @@ tests/cases/compiler/a.js(3,16): error TS1109: Expression expected. export default var a = 10; ~~~~~~~~~~~~~~ !!! error TS2528: A module cannot have multiple default exports. - ~~~~~~~~~~~~~~ -!!! error TS8003: 'export=' can only be used in a .ts file. ~~~ !!! error TS1109: Expression expected. \ No newline at end of file diff --git a/tests/cases/conformance/salsa/exportDefaultInJsFile01.ts b/tests/cases/conformance/salsa/exportDefaultInJsFile01.ts new file mode 100644 index 0000000000..bf2f3a4e99 --- /dev/null +++ b/tests/cases/conformance/salsa/exportDefaultInJsFile01.ts @@ -0,0 +1,6 @@ +// @allowJS: true +// @target: es3 +// @module: commonjs + +// @filename: myFile01.js +export default "hello"; \ No newline at end of file diff --git a/tests/cases/conformance/salsa/exportDefaultInJsFile02.ts b/tests/cases/conformance/salsa/exportDefaultInJsFile02.ts new file mode 100644 index 0000000000..1075b135f1 --- /dev/null +++ b/tests/cases/conformance/salsa/exportDefaultInJsFile02.ts @@ -0,0 +1,6 @@ +// @allowJS: true +// @target: es2015 +// @module: es2015 + +// @filename: myFile02.js +export default "hello"; \ No newline at end of file