]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/id-blacklist.js
2 * @fileoverview Tests for id-blacklist rule.
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require ( "../../../lib/rules/id-blacklist" ),
13 { RuleTester
} = require ( "../../../lib/rule-tester" );
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester ();
20 const error
= { messageId
: "blacklisted" , type
: "Identifier" };
22 ruleTester
. run ( "id-blacklist" , rule
, {
25 code
: "foo = \" bar \" " ,
29 code
: "bar = \" bar \" " ,
33 code
: "foo = \" bar \" " ,
34 options
: [ "f" , "fo" , "fooo" , "bar" ]
37 code
: "function foo(){}" ,
42 options
: [ "f" , "fo" , "fooo" , "bar" ]
45 code
: "import { foo as bar } from 'mod'" ,
47 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" }
50 code
: "export { foo as bar } from 'mod'" ,
52 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" }
56 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "baz" ]
59 code
: "var foo = bar.baz;" ,
60 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" ]
63 code
: "var foo = bar.baz.bing;" ,
64 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
67 code
: "foo.bar.baz = bing.bong.bash;" ,
68 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
71 code
: "if (foo.bar) {}" ,
72 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
75 code
: "var obj = { key: foo.bar };" ,
76 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
79 code
: "const {foo: bar} = baz" ,
81 parserOptions
: { ecmaVersion
: 6 }
84 code
: "const {foo: {bar: baz}} = qux" ,
85 options
: [ "foo" , "bar" ],
86 parserOptions
: { ecmaVersion
: 6 }
89 code
: "function foo({ bar: baz }) {}" ,
91 parserOptions
: { ecmaVersion
: 6 }
94 code
: "function foo({ bar: {baz: qux} }) {}" ,
95 options
: [ "bar" , "baz" ],
96 parserOptions
: { ecmaVersion
: 6 }
99 code
: "function foo({baz} = obj.qux) {}" ,
101 parserOptions
: { ecmaVersion
: 6 }
104 code
: "function foo({ foo: {baz} = obj.qux }) {}" ,
106 parserOptions
: { ecmaVersion
: 6 }
109 code
: "({a: bar = obj.baz});" ,
111 parserOptions
: { ecmaVersion
: 6 }
114 code
: "({foo: {a: bar = obj.baz}} = qux);" ,
116 parserOptions
: { ecmaVersion
: 6 }
119 code
: "var arr = [foo.bar];" ,
120 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
124 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
127 code
: "[foo.bar.nesting]" ,
128 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
131 code
: "if (foo.bar === bar.baz) { [foo.bar] }" ,
132 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "barr" , "bazz" , "bingg" ]
135 code
: "var myArray = new Array(); var myDate = new Date();" ,
136 options
: [ "array" , "date" , "mydate" , "myarray" , "new" , "var" ]
151 code
: "({foo: obj.bar.bar.bar.baz} = {});" ,
152 options
: [ "foo" , "bar" ],
153 parserOptions
: { ecmaVersion
: 6 }
156 code
: "({[obj.bar]: a = baz} = qux);" ,
158 parserOptions
: { ecmaVersion
: 6 }
161 // references to global variables
163 code
: "Number.parseInt()" ,
167 code
: "x = Number.NaN;" ,
171 code
: "var foo = undefined;" ,
172 options
: [ "undefined" ]
175 code
: "if (foo === undefined);" ,
176 options
: [ "undefined" ]
179 code
: "obj[undefined] = 5;" , // creates obj["undefined"]. It should be disallowed, but the rule doesn't know values of globals and can't control computed access.
180 options
: [ "undefined" ]
183 code
: "foo = { [myGlobal]: 1 };" ,
184 options
: [ "myGlobal" ],
185 parserOptions
: { ecmaVersion
: 6 },
186 globals
: { myGlobal
: "readonly" }
189 code
: "({ myGlobal } = foo);" , // writability doesn't affect the logic, it's always assumed that user doesn't have control over the names of globals.
190 options
: [ "myGlobal" ],
191 parserOptions
: { ecmaVersion
: 6 },
192 globals
: { myGlobal
: "writable" }
195 code
: "/* global myGlobal: readonly */ myGlobal = 5;" ,
196 options
: [ "myGlobal" ]
199 code
: "var foo = [Map];" ,
204 code
: "var foo = { bar: window.baz };" ,
206 env
: { browser
: true }
211 code
: "foo = \" bar \" " ,
218 code
: "bar = \" bar \" " ,
225 code
: "foo = \" bar \" " ,
226 options
: [ "f" , "fo" , "foo" , "bar" ],
232 code
: "function foo(){}" ,
233 options
: [ "f" , "fo" , "foo" , "bar" ],
239 code
: "import foo from 'mod'" ,
241 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
247 code
: "import * as foo from 'mod'" ,
249 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
255 code
: "import { foo } from 'mod'" ,
257 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
263 code
: "import { foo as bar } from 'mod'" ,
265 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
267 messageId
: "blacklisted" ,
268 data
: { name
: "bar" },
274 code
: "import { foo as bar } from 'mod'" ,
275 options
: [ "foo" , "bar" ],
276 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
278 messageId
: "blacklisted" ,
279 data
: { name
: "bar" },
285 code
: "import { foo as foo } from 'mod'" ,
287 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
289 messageId
: "blacklisted" ,
290 data
: { name
: "foo" },
296 code
: "import { foo, foo as bar } from 'mod'" ,
298 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
300 messageId
: "blacklisted" ,
301 data
: { name
: "foo" },
307 code
: "import { foo as bar, foo } from 'mod'" ,
309 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
311 messageId
: "blacklisted" ,
312 data
: { name
: "foo" },
318 code
: "import foo, { foo as bar } from 'mod'" ,
320 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
322 messageId
: "blacklisted" ,
323 data
: { name
: "foo" },
329 code
: "var foo; export { foo as bar };" ,
331 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
333 messageId
: "blacklisted" ,
334 data
: { name
: "bar" },
340 code
: "var foo; export { foo };" ,
342 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
345 messageId
: "blacklisted" ,
346 data
: { name
: "foo" },
351 messageId
: "blacklisted" ,
352 data
: { name
: "foo" },
359 code
: "var foo; export { foo as bar };" ,
361 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
364 messageId
: "blacklisted" ,
365 data
: { name
: "foo" },
370 // reports each occurrence of local identifier, although it's renamed in this export specifier
372 messageId
: "blacklisted" ,
373 data
: { name
: "foo" },
380 code
: "var foo; export { foo as foo };" ,
382 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
385 messageId
: "blacklisted" ,
386 data
: { name
: "foo" },
391 messageId
: "blacklisted" ,
392 data
: { name
: "foo" },
397 messageId
: "blacklisted" ,
398 data
: { name
: "foo" },
405 code
: "var foo; export { foo as bar };" ,
406 options
: [ "foo" , "bar" ],
407 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
410 messageId
: "blacklisted" ,
411 data
: { name
: "foo" },
416 messageId
: "blacklisted" ,
417 data
: { name
: "foo" },
422 messageId
: "blacklisted" ,
423 data
: { name
: "bar" },
430 code
: "export { foo } from 'mod'" ,
432 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
438 code
: "export { foo as bar } from 'mod'" ,
440 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
442 messageId
: "blacklisted" ,
443 data
: { name
: "bar" },
449 code
: "export { foo as bar } from 'mod'" ,
450 options
: [ "foo" , "bar" ],
451 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
453 messageId
: "blacklisted" ,
454 data
: { name
: "bar" },
460 code
: "export { foo as foo } from 'mod'" ,
462 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
464 messageId
: "blacklisted" ,
465 data
: { name
: "foo" },
471 code
: "export { foo, foo as bar } from 'mod'" ,
473 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
475 messageId
: "blacklisted" ,
476 data
: { name
: "foo" },
482 code
: "export { foo as bar, foo } from 'mod'" ,
484 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
486 messageId
: "blacklisted" ,
487 data
: { name
: "foo" },
494 options
: [ "f" , "fo" , "foo" , "b" , "ba" , "baz" ],
500 code
: "foo[bar] = baz;" ,
503 messageId
: "blacklisted" ,
504 data
: { name
: "bar" },
509 code
: "baz = foo[bar];" ,
512 messageId
: "blacklisted" ,
513 data
: { name
: "bar" },
518 code
: "var foo = bar.baz;" ,
519 options
: [ "f" , "fo" , "foo" , "b" , "ba" , "barr" , "bazz" ],
525 code
: "var foo = bar.baz;" ,
526 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "bar" , "bazz" ],
532 code
: "if (foo.bar) {}" ,
533 options
: [ "f" , "fo" , "foo" , "b" , "ba" , "barr" , "bazz" , "bingg" ],
539 code
: "var obj = { key: foo.bar };" ,
546 code
: "var obj = { key: foo.bar };" ,
553 code
: "var obj = { key: foo.bar };" ,
560 code
: "var arr = [foo.bar];" ,
567 code
: "var arr = [foo.bar];" ,
575 options
: [ "f" , "fo" , "foo" , "b" , "ba" , "barr" , "bazz" , "bingg" ],
581 code
: "if (foo.bar === bar.baz) { [bing.baz] }" ,
582 options
: [ "f" , "fo" , "foo" , "b" , "ba" , "barr" , "bazz" , "bingg" ],
588 code
: "if (foo.bar === bar.baz) { [foo.bar] }" ,
589 options
: [ "f" , "fo" , "fooo" , "b" , "ba" , "bar" , "bazz" , "bingg" ],
595 code
: "var myArray = new Array(); var myDate = new Date();" ,
596 options
: [ "array" , "date" , "myDate" , "myarray" , "new" , "var" ],
602 code
: "var myArray = new Array(); var myDate = new Date();" ,
603 options
: [ "array" , "date" , "mydate" , "myArray" , "new" , "var" ],
616 code
: "foo.bar.baz = 1" ,
617 options
: [ "bar" , "baz" ],
623 code
: "const {foo} = baz" ,
625 parserOptions
: { ecmaVersion
: 6 },
628 messageId
: "blacklisted" ,
629 data
: { name
: "foo" },
636 code
: "const {foo: bar} = baz" ,
637 options
: [ "foo" , "bar" ],
638 parserOptions
: { ecmaVersion
: 6 },
641 messageId
: "blacklisted" ,
642 data
: { name
: "bar" },
649 code
: "const {[foo]: bar} = baz" ,
650 options
: [ "foo" , "bar" ],
651 parserOptions
: { ecmaVersion
: 6 },
654 messageId
: "blacklisted" ,
655 data
: { name
: "foo" },
660 messageId
: "blacklisted" ,
661 data
: { name
: "bar" },
668 code
: "const {foo: {bar: baz}} = qux" ,
669 options
: [ "foo" , "bar" , "baz" ],
670 parserOptions
: { ecmaVersion
: 6 },
673 messageId
: "blacklisted" ,
674 data
: { name
: "baz" },
681 code
: "const {foo: {[bar]: baz}} = qux" ,
682 options
: [ "foo" , "bar" , "baz" ],
683 parserOptions
: { ecmaVersion
: 6 },
686 messageId
: "blacklisted" ,
687 data
: { name
: "bar" },
692 messageId
: "blacklisted" ,
693 data
: { name
: "baz" },
700 code
: "const {[foo]: {[bar]: baz}} = qux" ,
701 options
: [ "foo" , "bar" , "baz" ],
702 parserOptions
: { ecmaVersion
: 6 },
705 messageId
: "blacklisted" ,
706 data
: { name
: "foo" },
711 messageId
: "blacklisted" ,
712 data
: { name
: "bar" },
717 messageId
: "blacklisted" ,
718 data
: { name
: "baz" },
725 code
: "function foo({ bar: baz }) {}" ,
726 options
: [ "bar" , "baz" ],
727 parserOptions
: { ecmaVersion
: 6 },
730 messageId
: "blacklisted" ,
731 data
: { name
: "baz" },
738 code
: "function foo({ bar: {baz: qux} }) {}" ,
739 options
: [ "bar" , "baz" , "qux" ],
740 parserOptions
: { ecmaVersion
: 6 },
743 messageId
: "blacklisted" ,
744 data
: { name
: "qux" },
751 code
: "({foo: obj.bar} = baz);" ,
752 options
: [ "foo" , "bar" ],
753 parserOptions
: { ecmaVersion
: 6 },
756 messageId
: "blacklisted" ,
757 data
: { name
: "bar" },
764 code
: "({foo: obj.bar.bar.bar.baz} = {});" ,
765 options
: [ "foo" , "bar" , "baz" ],
766 parserOptions
: { ecmaVersion
: 6 },
769 messageId
: "blacklisted" ,
770 data
: { name
: "baz" },
777 code
: "({[foo]: obj.bar} = baz);" ,
778 options
: [ "foo" , "bar" ],
779 parserOptions
: { ecmaVersion
: 6 },
782 messageId
: "blacklisted" ,
783 data
: { name
: "foo" },
788 messageId
: "blacklisted" ,
789 data
: { name
: "bar" },
796 code
: "({foo: { a: obj.bar }} = baz);" ,
798 parserOptions
: { ecmaVersion
: 6 },
801 messageId
: "blacklisted" ,
802 data
: { name
: "bar" },
809 code
: "({a: obj.bar = baz} = qux);" ,
811 parserOptions
: { ecmaVersion
: 6 },
814 messageId
: "blacklisted" ,
815 data
: { name
: "bar" },
822 code
: "({a: obj.bar.bar.baz = obj.qux} = obj.qux);" ,
823 options
: [ "a" , "bar" , "baz" , "qux" ],
824 parserOptions
: { ecmaVersion
: 6 },
827 messageId
: "blacklisted" ,
828 data
: { name
: "baz" },
835 code
: "({a: obj[bar] = obj.qux} = obj.qux);" ,
836 options
: [ "a" , "bar" , "baz" , "qux" ],
837 parserOptions
: { ecmaVersion
: 6 },
840 messageId
: "blacklisted" ,
841 data
: { name
: "bar" },
848 code
: "({a: [obj.bar] = baz} = qux);" ,
850 parserOptions
: { ecmaVersion
: 6 },
853 messageId
: "blacklisted" ,
854 data
: { name
: "bar" },
861 code
: "({foo: { a: obj.bar = baz}} = qux);" ,
863 parserOptions
: { ecmaVersion
: 6 },
866 messageId
: "blacklisted" ,
867 data
: { name
: "bar" },
874 code
: "({foo: { [a]: obj.bar }} = baz);" ,
876 parserOptions
: { ecmaVersion
: 6 },
879 messageId
: "blacklisted" ,
880 data
: { name
: "bar" },
887 code
: "({...obj.bar} = baz);" ,
889 parserOptions
: { ecmaVersion
: 9 },
892 messageId
: "blacklisted" ,
893 data
: { name
: "bar" },
900 code
: "([obj.bar] = baz);" ,
902 parserOptions
: { ecmaVersion
: 6 },
905 messageId
: "blacklisted" ,
906 data
: { name
: "bar" },
913 code
: "const [bar] = baz;" ,
915 parserOptions
: { ecmaVersion
: 6 },
918 messageId
: "blacklisted" ,
919 data
: { name
: "bar" },
926 // not a reference to a global variable, because it isn't a reference to a variable
928 code
: "foo.undefined = 1;" ,
929 options
: [ "undefined" ],
932 messageId
: "blacklisted" ,
933 data
: { name
: "undefined" },
939 code
: "var foo = { undefined: 1 };" ,
940 options
: [ "undefined" ],
943 messageId
: "blacklisted" ,
944 data
: { name
: "undefined" },
950 code
: "var foo = { undefined: undefined };" ,
951 options
: [ "undefined" ],
954 messageId
: "blacklisted" ,
955 data
: { name
: "undefined" },
962 code
: "var foo = { Number() {} };" ,
964 parserOptions
: { ecmaVersion
: 6 },
967 messageId
: "blacklisted" ,
968 data
: { name
: "Number" },
974 code
: "class Foo { Number() {} }" ,
976 parserOptions
: { ecmaVersion
: 6 },
979 messageId
: "blacklisted" ,
980 data
: { name
: "Number" },
986 code
: "myGlobal: while(foo) { break myGlobal; } " ,
987 options
: [ "myGlobal" ],
988 globals
: { myGlobal
: "readonly" },
991 messageId
: "blacklisted" ,
992 data
: { name
: "myGlobal" },
997 messageId
: "blacklisted" ,
998 data
: { name
: "myGlobal" },
1005 // globals declared in the given source code are not excluded from consideration
1007 code
: "const foo = 1; bar = foo;" ,
1009 parserOptions
: { ecmaVersion
: 6 },
1012 messageId
: "blacklisted" ,
1013 data
: { name
: "foo" },
1018 messageId
: "blacklisted" ,
1019 data
: { name
: "foo" },
1026 code
: "let foo; foo = bar;" ,
1028 parserOptions
: { ecmaVersion
: 6 },
1031 messageId
: "blacklisted" ,
1032 data
: { name
: "foo" },
1037 messageId
: "blacklisted" ,
1038 data
: { name
: "foo" },
1045 code
: "bar = foo; var foo;" ,
1049 messageId
: "blacklisted" ,
1050 data
: { name
: "foo" },
1055 messageId
: "blacklisted" ,
1056 data
: { name
: "foo" },
1063 code
: "function foo() {} var bar = foo;" ,
1067 messageId
: "blacklisted" ,
1068 data
: { name
: "foo" },
1073 messageId
: "blacklisted" ,
1074 data
: { name
: "foo" },
1081 code
: "class Foo {} var bar = Foo;" ,
1083 parserOptions
: { ecmaVersion
: 6 },
1086 messageId
: "blacklisted" ,
1087 data
: { name
: "Foo" },
1092 messageId
: "blacklisted" ,
1093 data
: { name
: "Foo" },
1100 // redeclared globals are not excluded from consideration
1102 code
: "let undefined; undefined = 1;" ,
1103 options
: [ "undefined" ],
1104 parserOptions
: { ecmaVersion
: 6 },
1107 messageId
: "blacklisted" ,
1108 data
: { name
: "undefined" },
1113 messageId
: "blacklisted" ,
1114 data
: { name
: "undefined" },
1121 code
: "foo = undefined; var undefined;" ,
1122 options
: [ "undefined" ],
1125 messageId
: "blacklisted" ,
1126 data
: { name
: "undefined" },
1131 messageId
: "blacklisted" ,
1132 data
: { name
: "undefined" },
1139 code
: "function undefined(){} x = undefined;" ,
1140 options
: [ "undefined" ],
1143 messageId
: "blacklisted" ,
1144 data
: { name
: "undefined" },
1149 messageId
: "blacklisted" ,
1150 data
: { name
: "undefined" },
1157 code
: "class Number {} x = Number.NaN;" ,
1158 options
: [ "Number" ],
1159 parserOptions
: { ecmaVersion
: 6 },
1162 messageId
: "blacklisted" ,
1163 data
: { name
: "Number" },
1168 messageId
: "blacklisted" ,
1169 data
: { name
: "Number" },
1177 * Assignment to a property with a blacklisted name isn't allowed, in general.
1178 * In this case, that restriction prevents creating a global variable with a blacklisted name.
1181 code
: "/* globals myGlobal */ window.myGlobal = 5; foo = myGlobal;" ,
1182 options
: [ "myGlobal" ],
1183 env
: { browser
: true },
1186 messageId
: "blacklisted" ,
1187 data
: { name
: "myGlobal" },
1194 // disabled global variables
1196 code
: "var foo = undefined;" ,
1197 options
: [ "undefined" ],
1198 globals
: { undefined : "off" },
1201 messageId
: "blacklisted" ,
1202 data
: { name
: "undefined" },
1208 code
: "/* globals Number: off */ Number.parseInt()" ,
1209 options
: [ "Number" ],
1212 messageId
: "blacklisted" ,
1213 data
: { name
: "Number" },
1219 code
: "var foo = [Map];" , // this actually isn't a disabled global: it was never enabled because es6 environment isn't enabled
1223 messageId
: "blacklisted" ,
1224 data
: { name
: "Map" },
1230 // shadowed global variables
1232 code
: "if (foo) { let undefined; bar = undefined; }" ,
1233 options
: [ "undefined" ],
1234 parserOptions
: { ecmaVersion
: 6 },
1237 messageId
: "blacklisted" ,
1238 data
: { name
: "undefined" },
1243 messageId
: "blacklisted" ,
1244 data
: { name
: "undefined" },
1251 code
: "function foo(Number) { var x = Number.NaN; }" ,
1252 options
: [ "Number" ],
1255 messageId
: "blacklisted" ,
1256 data
: { name
: "Number" },
1261 messageId
: "blacklisted" ,
1262 data
: { name
: "Number" },
1269 code
: "function foo() { var myGlobal; x = myGlobal; }" ,
1270 options
: [ "myGlobal" ],
1271 globals
: { myGlobal
: "readonly" },
1274 messageId
: "blacklisted" ,
1275 data
: { name
: "myGlobal" },
1280 messageId
: "blacklisted" ,
1281 data
: { name
: "myGlobal" },
1288 code
: "function foo(bar) { return Number.parseInt(bar); } const Number = 1;" ,
1289 options
: [ "Number" ],
1290 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
1293 messageId
: "blacklisted" ,
1294 data
: { name
: "Number" },
1299 messageId
: "blacklisted" ,
1300 data
: { name
: "Number" },
1307 code
: "import Number from 'myNumber'; const foo = Number.parseInt(bar);" ,
1308 options
: [ "Number" ],
1309 parserOptions
: { ecmaVersion
: 6 , sourceType
: "module" },
1312 messageId
: "blacklisted" ,
1313 data
: { name
: "Number" },
1318 messageId
: "blacklisted" ,
1319 data
: { name
: "Number" },
1326 code
: "var foo = function undefined() {};" ,
1327 options
: [ "undefined" ],
1330 messageId
: "blacklisted" ,
1331 data
: { name
: "undefined" },
1337 // this is a reference to a global variable, but at the same time creates a property with a blacklisted name
1339 code
: "var foo = { undefined }" ,
1340 options
: [ "undefined" ],
1341 parserOptions
: { ecmaVersion
: 6 },
1344 messageId
: "blacklisted" ,
1345 data
: { name
: "undefined" },