@@ -15694,8 +15694,8 @@ namespace ts {
15694
15694
}
15695
15695
15696
15696
/**
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
15699
15699
* built-in properties. This check issues a transpile error when a class has a static
15700
15700
* member with the same name as a non-writable built-in property.
15701
15701
*
@@ -15705,37 +15705,21 @@ namespace ts {
15705
15705
* @see http://www.ecma-international.org/ecma-262/6.0/#sec-function-instances
15706
15706
*/
15707
15707
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));
15710
15708
for (const member of node.members) {
15711
- const isStatic = getModifierFlags(member) & ModifierFlags.Static;
15712
- const isMethod = member.kind === SyntaxKind.MethodDeclaration;
15713
15709
const memberNameNode = member.name;
15710
+ const isStatic = getModifierFlags(member) & ModifierFlags.Static;
15714
15711
if (isStatic && memberNameNode) {
15715
15712
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));
15728
15721
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;
15739
15723
}
15740
15724
}
15741
15725
}
0 commit comments