From 94c78961ef3e340c617334597bf2c1b04d25f87f Mon Sep 17 00:00:00 2001 From: Yuichi Nukiyama Date: Sat, 19 Nov 2016 16:18:20 +0900 Subject: [PATCH] modify error message --- src/compiler/checker.ts | 10 ++++++---- src/compiler/diagnosticMessages.json | 6 +++++- .../parserExportAssignment10.errors.txt | 11 +++++++++++ .../reference/parserExportAssignment10.js | 16 ++++++++++++++++ .../reference/parserExportAssignment5.errors.txt | 4 ++-- .../reference/parserExportAssignment9.errors.txt | 8 ++++---- .../parserExportAssignment10.ts | 5 +++++ 7 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 tests/baselines/reference/parserExportAssignment10.errors.txt create mode 100644 tests/baselines/reference/parserExportAssignment10.js create mode 100644 tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment10.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 824ce784909..cb10e8fbf13 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7293,9 +7293,6 @@ namespace ts { if (source.flags & TypeFlags.Object && target.flags & TypeFlags.Primitive) { tryElaborateErrorsForPrimitivesAndObjects(source, target); } - else if (source.symbol && source.flags & TypeFlags.ObjectType && globalObjectType === source) { - reportError(Diagnostics.The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead); - } else if (source.symbol && source.flags & TypeFlags.Object && globalObjectType === source) { reportError(Diagnostics.The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead); } @@ -18764,7 +18761,12 @@ namespace ts { const container = node.parent.kind === SyntaxKind.SourceFile ? node.parent : node.parent.parent; if (container.kind === SyntaxKind.ModuleDeclaration && !isAmbientModule(container)) { - error(node, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + if (node.isExportEquals) { + error(node, Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); + } else { + error(node, Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module); + } + return; } // Grammar checking diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 03f1e5e8388..03be26ff954 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -195,7 +195,7 @@ "category": "Error", "code": 1062 }, - "A default export can only be used in an ECMAScript-style module.": { + "An export assignment cannot be used in a namespace.": { "category": "Error", "code": 1063 }, @@ -851,6 +851,10 @@ "category": "Error", "code": 1317 }, + "A default export can only be used in an ECMAScript-style module.": { + "category": "Error", + "code": 1318 + }, "Duplicate identifier '{0}'.": { "category": "Error", "code": 2300 diff --git a/tests/baselines/reference/parserExportAssignment10.errors.txt b/tests/baselines/reference/parserExportAssignment10.errors.txt new file mode 100644 index 00000000000..db00da3e8b0 --- /dev/null +++ b/tests/baselines/reference/parserExportAssignment10.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment10.ts(4,3): error TS1128: Declaration or statement expected. + + +==== tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment10.ts (1 errors) ==== + export default "123"; + namespace Foo { + var foo; + export foo; + ~~~~~~ +!!! error TS1128: Declaration or statement expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/parserExportAssignment10.js b/tests/baselines/reference/parserExportAssignment10.js new file mode 100644 index 00000000000..58bd2c82a9e --- /dev/null +++ b/tests/baselines/reference/parserExportAssignment10.js @@ -0,0 +1,16 @@ +//// [parserExportAssignment10.ts] +export default "123"; +namespace Foo { + var foo; + export foo; +} + +//// [parserExportAssignment10.js] +"use strict"; +exports.__esModule = true; +exports["default"] = "123"; +var Foo; +(function (Foo) { + var foo; + foo; +})(Foo || (Foo = {})); diff --git a/tests/baselines/reference/parserExportAssignment5.errors.txt b/tests/baselines/reference/parserExportAssignment5.errors.txt index adef4b88f38..7b07e1d225f 100644 --- a/tests/baselines/reference/parserExportAssignment5.errors.txt +++ b/tests/baselines/reference/parserExportAssignment5.errors.txt @@ -1,9 +1,9 @@ -tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment5.ts(2,5): error TS1063: A default export can only be used in an ECMAScript-style module. +tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment5.ts(2,5): error TS1063: An export assignment cannot be used in a namespace. ==== tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment5.ts (1 errors) ==== module M { export = A; ~~~~~~~~~~~ -!!! error TS1063: A default export can only be used in an ECMAScript-style module. +!!! error TS1063: An export assignment cannot be used in a namespace. } \ No newline at end of file diff --git a/tests/baselines/reference/parserExportAssignment9.errors.txt b/tests/baselines/reference/parserExportAssignment9.errors.txt index 9fc978537a6..5d84ee9836c 100644 --- a/tests/baselines/reference/parserExportAssignment9.errors.txt +++ b/tests/baselines/reference/parserExportAssignment9.errors.txt @@ -1,16 +1,16 @@ -tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment9.ts(2,3): error TS1063: A default export can only be used in an ECMAScript-style module. -tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment9.ts(6,3): error TS1063: A default export can only be used in an ECMAScript-style module. +tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment9.ts(2,3): error TS1318: A default export can only be used in an ECMAScript-style module. +tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment9.ts(6,3): error TS1318: A default export can only be used in an ECMAScript-style module. ==== tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment9.ts (2 errors) ==== namespace Foo { export default foo; ~~~~~~~~~~~~~~~~~~~ -!!! error TS1063: A default export can only be used in an ECMAScript-style module. +!!! error TS1318: A default export can only be used in an ECMAScript-style module. } module Bar { export default bar; ~~~~~~~~~~~~~~~~~~~ -!!! error TS1063: A default export can only be used in an ECMAScript-style module. +!!! error TS1318: A default export can only be used in an ECMAScript-style module. } \ No newline at end of file diff --git a/tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment10.ts b/tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment10.ts new file mode 100644 index 00000000000..a5bf22dd854 --- /dev/null +++ b/tests/cases/conformance/parser/ecmascript5/ExportAssignments/parserExportAssignment10.ts @@ -0,0 +1,5 @@ +export default "123"; +namespace Foo { + var foo; + export foo; +} \ No newline at end of file