mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-14 19:16:17 -06:00
Error when users define "__esModule"
This commit is contained in:
parent
535a001cbb
commit
a34834cb52
@ -21909,6 +21909,10 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
if (hasModifier(node.parent.parent, ModifierFlags.Export) && compilerOptions.module !== ModuleKind.ES2015) {
|
||||
checkESModuleMarker(node.name);
|
||||
}
|
||||
|
||||
const checkLetConstNames = (isLet(node) || isConst(node));
|
||||
|
||||
// 1. LexicalDeclaration : LetOrConst BindingList ;
|
||||
@ -21921,6 +21925,22 @@ namespace ts {
|
||||
return checkLetConstNames && checkGrammarNameInLetOrConstDeclarations(node.name);
|
||||
}
|
||||
|
||||
function checkESModuleMarker(name: Identifier | BindingPattern): boolean {
|
||||
if (name.kind === SyntaxKind.Identifier) {
|
||||
if (unescapeIdentifier(name.text) === "__esModule") {
|
||||
return grammarErrorOnNode(name, Diagnostics.Identifier_expected_esModule_is_reserved_as_a_marker_for_transpiled_ES2015_module);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const elements = (<BindingPattern>name).elements;
|
||||
for (const element of elements) {
|
||||
if (!isOmittedExpression(element)) {
|
||||
return checkESModuleMarker(element.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function checkGrammarNameInLetOrConstDeclarations(name: Identifier | BindingPattern): boolean {
|
||||
if (name.kind === SyntaxKind.Identifier) {
|
||||
if ((<Identifier>name).originalKeywordKind === SyntaxKind.LetKeyword) {
|
||||
|
||||
@ -671,6 +671,10 @@
|
||||
"category": "Error",
|
||||
"code": 1215
|
||||
},
|
||||
"Identifier expected. '__esModule' is reserved as a marker for transpiled ES2015 module.": {
|
||||
"category": "Error",
|
||||
"code": 1216
|
||||
},
|
||||
"Export assignment is not supported when '--module' flag is 'system'.": {
|
||||
"category": "Error",
|
||||
"code": 1218
|
||||
|
||||
@ -835,7 +835,7 @@ namespace ts {
|
||||
const parseTreeNode = getParseTreeNode(node);
|
||||
if (parseTreeNode && !shouldAppendEsModuleMarker) {
|
||||
// class declaration get down-level transformed to be variable statement
|
||||
shouldAppendEsModuleMarker = (parseTreeNode.kind === SyntaxKind.VariableStatement || parseTreeNode.kind === SyntaxKind.ClassDeclaration || parseTreeNode.kind === SyntaxKind.ImportEqualsDeclaration)
|
||||
shouldAppendEsModuleMarker = (parseTreeNode.kind === SyntaxKind.VariableStatement ||parseTreeNode.kind === SyntaxKind.ClassDeclaration || parseTreeNode.kind === SyntaxKind.ImportEqualsDeclaration)
|
||||
&& hasModifier(parseTreeNode, ModifierFlags.Export);
|
||||
}
|
||||
|
||||
|
||||
10
tests/baselines/reference/es5-commonjs3.errors.txt
Normal file
10
tests/baselines/reference/es5-commonjs3.errors.txt
Normal file
@ -0,0 +1,10 @@
|
||||
tests/cases/compiler/es5-commonjs3.ts(3,12): error TS1216: Identifier expected. '__esModule' is reserved as a marker for transpiled ES2015 module.
|
||||
|
||||
|
||||
==== tests/cases/compiler/es5-commonjs3.ts (1 errors) ====
|
||||
|
||||
export default "test";
|
||||
export var __esModule = 1;
|
||||
~~~~~~~~~~
|
||||
!!! error TS1216: Identifier expected. '__esModule' is reserved as a marker for transpiled ES2015 module.
|
||||
|
||||
@ -8,3 +8,4 @@ export var __esModule = 1;
|
||||
"use strict";
|
||||
exports.default = "test";
|
||||
exports.__esModule = 1;
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
|
||||
21
tests/baselines/reference/es5-commonjs4.errors.txt
Normal file
21
tests/baselines/reference/es5-commonjs4.errors.txt
Normal file
@ -0,0 +1,21 @@
|
||||
tests/cases/compiler/es5-commonjs4.ts(14,12): error TS1216: Identifier expected. '__esModule' is reserved as a marker for transpiled ES2015 module.
|
||||
|
||||
|
||||
==== tests/cases/compiler/es5-commonjs4.ts (1 errors) ====
|
||||
|
||||
export default class A
|
||||
{
|
||||
constructor ()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public B()
|
||||
{
|
||||
return 42;
|
||||
}
|
||||
}
|
||||
export var __esModule = 1;
|
||||
~~~~~~~~~~
|
||||
!!! error TS1216: Identifier expected. '__esModule' is reserved as a marker for transpiled ES2015 module.
|
||||
|
||||
@ -27,3 +27,4 @@ var A = (function () {
|
||||
}());
|
||||
exports.default = A;
|
||||
exports.__esModule = 1;
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user