Skip to content

Commit 9b217e3

Browse files
committed
Removing es6 method/property distinction.
Adding tests with default export and anonymous class expressions.
1 parent 4718efd commit 9b217e3

File tree

6 files changed

+155
-416
lines changed

6 files changed

+155
-416
lines changed

src/compiler/checker.ts

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -15694,8 +15694,8 @@ namespace ts {
1569415694
}
1569515695

1569615696
/**
15697-
* Static members being set on a constructor function may conflict with built-in Function
15698-
* object properties. Esp. in ECMAScript 5 there are non-configurable and non-writable
15697+
* Static members being set on a constructor function may conflict with built-in properties
15698+
* of Function. Esp. in ECMAScript 5 there are non-configurable and non-writable
1569915699
* built-in properties. This check issues a transpile error when a class has a static
1570015700
* member with the same name as a non-writable built-in property.
1570115701
*
@@ -15705,37 +15705,21 @@ namespace ts {
1570515705
* @see http://www.ecma-international.org/ecma-262/6.0/#sec-function-instances
1570615706
*/
1570715707
function checkClassForStaticPropertyNameConflicts(node: ClassLikeDeclaration) {
15708-
const message = Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1;
15709-
const className = getNameOfSymbol(getSymbolOfNode(node));
1571015708
for (const member of node.members) {
15711-
const isStatic = getModifierFlags(member) & ModifierFlags.Static;
15712-
const isMethod = member.kind === SyntaxKind.MethodDeclaration;
1571315709
const memberNameNode = member.name;
15710+
const isStatic = getModifierFlags(member) & ModifierFlags.Static;
1571415711
if (isStatic && memberNameNode) {
1571515712
const memberName = getPropertyNameForPropertyNameNode(memberNameNode);
15716-
if (languageVersion <= ScriptTarget.ES5) { // ES3, ES5
15717-
if (memberName === "prototype" ||
15718-
memberName === "name" ||
15719-
memberName === "length" ||
15720-
memberName === "caller" ||
15721-
memberName === "arguments"
15722-
) {
15723-
error(memberNameNode, message, memberName, className);
15724-
}
15725-
}
15726-
else { // ES6+
15727-
if (memberName === "prototype") {
15713+
switch (memberName) {
15714+
case "name":
15715+
case "length":
15716+
case "caller":
15717+
case "arguments":
15718+
case "prototype":
15719+
const message = Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1;
15720+
const className = getNameOfSymbol(getSymbolOfNode(node));
1572815721
error(memberNameNode, message, memberName, className);
15729-
}
15730-
else if ((
15731-
memberName === "name" ||
15732-
memberName === "length" ||
15733-
memberName === "caller" ||
15734-
memberName === "arguments") &&
15735-
isMethod === false
15736-
) {
15737-
error(memberNameNode, message, memberName, className);
15738-
}
15722+
break;
1573915723
}
1574015724
}
1574115725
}

tests/baselines/reference/staticPropertyNameConflictsEs5.errors.txt

Lines changed: 0 additions & 92 deletions
This file was deleted.

tests/baselines/reference/staticPropertyNameConflictsEs5.js

Lines changed: 0 additions & 120 deletions
This file was deleted.

tests/baselines/reference/staticPropertyNameConflictsEs6.errors.txt

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)