]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/no-shadow-restricted-names.js
first commit
[pve-eslint.git] / eslint / tests / lib / rules / no-shadow-restricted-names.js
1 /**
2 * @fileoverview Disallow shadowing of NaN, undefined, and Infinity (ES5 section 15.1.1)
3 * @author Michael Ficarra
4 */
5
6 "use strict";
7
8 //------------------------------------------------------------------------------
9 // Requirements
10 //------------------------------------------------------------------------------
11
12 const rule = require("../../../lib/rules/no-shadow-restricted-names"),
13 { RuleTester } = require("../../../lib/rule-tester");
14
15 const ruleTester = new RuleTester();
16
17 ruleTester.run("no-shadow-restricted-names", rule, {
18 valid: [
19 "function foo(bar){ var baz; }",
20 "!function foo(bar){ var baz; }",
21 "!function(bar){ var baz; }",
22 "try {} catch(e) {}",
23 { code: "export default function() {}", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
24 {
25 code: "try {} catch {}",
26 parserOptions: { ecmaVersion: 2019 }
27 },
28 "var undefined;",
29 "var undefined; doSomething(undefined);",
30 "var undefined; var undefined;",
31 {
32 code: "let undefined",
33 parserOptions: { ecmaVersion: 2015 }
34 }
35 ],
36 invalid: [
37 {
38 code: "function NaN(NaN) { var NaN; !function NaN(NaN) { try {} catch(NaN) {} }; }",
39 errors: [
40 { messageId: "shadowingRestrictedName", data: { name: "NaN" }, type: "Identifier" },
41 { messageId: "shadowingRestrictedName", data: { name: "NaN" }, type: "Identifier" },
42 { messageId: "shadowingRestrictedName", data: { name: "NaN" }, type: "Identifier" },
43 { messageId: "shadowingRestrictedName", data: { name: "NaN" }, type: "Identifier" },
44 { messageId: "shadowingRestrictedName", data: { name: "NaN" }, type: "Identifier" },
45 { messageId: "shadowingRestrictedName", data: { name: "NaN" }, type: "Identifier" }
46 ]
47 },
48 {
49 code: "function undefined(undefined) { !function undefined(undefined) { try {} catch(undefined) {} }; }",
50 errors: [
51 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" },
52 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" },
53 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" },
54 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" },
55 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" }
56 ]
57 },
58 {
59 code: "function Infinity(Infinity) { var Infinity; !function Infinity(Infinity) { try {} catch(Infinity) {} }; }",
60 errors: [
61 { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, type: "Identifier" },
62 { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, type: "Identifier" },
63 { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, type: "Identifier" },
64 { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, type: "Identifier" },
65 { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, type: "Identifier" },
66 { messageId: "shadowingRestrictedName", data: { name: "Infinity" }, type: "Identifier" }
67 ]
68 },
69 {
70 code: "function arguments(arguments) { var arguments; !function arguments(arguments) { try {} catch(arguments) {} }; }",
71 errors: [
72 { messageId: "shadowingRestrictedName", data: { name: "arguments" }, type: "Identifier" },
73 { messageId: "shadowingRestrictedName", data: { name: "arguments" }, type: "Identifier" },
74 { messageId: "shadowingRestrictedName", data: { name: "arguments" }, type: "Identifier" },
75 { messageId: "shadowingRestrictedName", data: { name: "arguments" }, type: "Identifier" },
76 { messageId: "shadowingRestrictedName", data: { name: "arguments" }, type: "Identifier" },
77 { messageId: "shadowingRestrictedName", data: { name: "arguments" }, type: "Identifier" }
78 ]
79 },
80 {
81 code: "function eval(eval) { var eval; !function eval(eval) { try {} catch(eval) {} }; }",
82 errors: [
83 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
84 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
85 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
86 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
87 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
88 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" }
89 ]
90 },
91 {
92 code: "var eval = (eval) => { var eval; !function eval(eval) { try {} catch(eval) {} }; }",
93 parserOptions: { ecmaVersion: 6 },
94 errors: [
95 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
96 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
97 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
98 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
99 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" },
100 { messageId: "shadowingRestrictedName", data: { name: "eval" }, type: "Identifier" }
101 ]
102 },
103 {
104 code: "var [undefined] = [1]",
105 parserOptions: { ecmaVersion: 6 },
106 errors: [
107 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" }
108 ]
109 },
110 {
111 code: "var {undefined} = obj; var {a: undefined} = obj; var {a: {b: {undefined}}} = obj; var {a, ...undefined} = obj;",
112 parserOptions: { ecmaVersion: 9 },
113 errors: [
114 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" },
115 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" },
116 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" },
117 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" }
118 ]
119 },
120 {
121 code: "var undefined; undefined = 5;",
122 errors: [
123 { messageId: "shadowingRestrictedName", data: { name: "undefined" }, type: "Identifier" }
124 ]
125 }
126 ]
127 });