]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/curly.js
2 * @fileoverview Tests for curly rule.
3 * @author Nicholas C. Zakas
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
12 const rule
= require("../../../lib/rules/curly"),
13 { RuleTester
} = require("../../../lib/rule-tester");
15 //------------------------------------------------------------------------------
17 //------------------------------------------------------------------------------
19 const ruleTester
= new RuleTester();
21 ruleTester
.run("curly", rule
, {
24 "if (foo) { bar() } else if (foo2) { baz() }",
25 "while (foo) { bar() }",
26 "do { bar(); } while (foo)",
27 "for (;foo;) { bar() }",
28 "for (var foo in bar) { console.log(foo) }",
30 code
: "for (var foo of bar) { console.log(foo) }",
31 parserOptions
: { ecmaVersion
: 6 }
34 code
: "for (;foo;) bar()",
38 code
: "if (foo) bar()",
42 code
: "if (a) { b; c; }",
46 code
: "for (var foo in bar) console.log(foo)",
50 code
: "for (var foo in bar) { console.log(1); console.log(2) }",
54 code
: "for (var foo of bar) console.log(foo)",
56 parserOptions
: { ecmaVersion
: 6 }
59 code
: "for (var foo of bar) { console.log(1); console.log(2) }",
61 parserOptions
: { ecmaVersion
: 6 }
64 code
: "if (foo) bar()",
65 options
: ["multi-line"]
68 code
: "if (foo) bar() \n",
69 options
: ["multi-line"]
72 code
: "if (foo) bar(); else baz()",
73 options
: ["multi-line"]
76 code
: "if (foo) bar(); \n else baz()",
77 options
: ["multi-line"]
80 code
: "if (foo) bar() \n else if (foo) bar() \n else baz()",
81 options
: ["multi-line"]
84 code
: "do baz(); while (foo)",
85 options
: ["multi-line"]
88 code
: "if (foo) { bar() }",
89 options
: ["multi-line"]
92 code
: "for (var foo in bar) console.log(foo)",
93 options
: ["multi-line"]
96 code
: "for (var foo in bar) { \n console.log(1); \n console.log(2); \n }",
97 options
: ["multi-line"]
100 code
: "for (var foo of bar) console.log(foo)",
101 options
: ["multi-line"],
102 parserOptions
: { ecmaVersion
: 6 }
105 code
: "for (var foo of bar) { \n console.log(1); \n console.log(2); \n }",
106 options
: ["multi-line"],
107 parserOptions
: { ecmaVersion
: 6 }
110 code
: "if (foo) { \n bar(); \n baz(); \n }",
111 options
: ["multi-line"]
114 code
: "do bar() \n while (foo)",
115 options
: ["multi-line"]
118 code
: "if (foo) { \n quz = { \n bar: baz, \n qux: foo \n }; \n }",
119 options
: ["multi-or-nest"]
122 code
: "while (true) { \n if (foo) \n doSomething(); \n else \n doSomethingElse(); \n }",
123 options
: ["multi-or-nest"]
126 code
: "if (foo) \n quz = true;",
127 options
: ["multi-or-nest"]
130 code
: "if (foo) { \n // line of comment \n quz = true; \n }",
131 options
: ["multi-or-nest"]
134 code
: "// line of comment \n if (foo) \n quz = true; \n",
135 options
: ["multi-or-nest"]
138 code
: "while (true) \n doSomething();",
139 options
: ["multi-or-nest"]
142 code
: "for (var i = 0; foo; i++) \n doSomething();",
143 options
: ["multi-or-nest"]
146 code
: "if (foo) { \n if(bar) \n doSomething(); \n } else \n doSomethingElse();",
147 options
: ["multi-or-nest"]
150 code
: "for (var foo in bar) \n console.log(foo)",
151 options
: ["multi-or-nest"]
154 code
: "for (var foo in bar) { \n if (foo) console.log(1); \n else console.log(2) \n }",
155 options
: ["multi-or-nest"]
158 code
: "for (var foo of bar) \n console.log(foo)",
159 options
: ["multi-or-nest"],
160 parserOptions
: { ecmaVersion
: 6 }
163 code
: "for (var foo of bar) { \n if (foo) console.log(1); \n else console.log(2) \n }",
164 options
: ["multi-or-nest"],
165 parserOptions
: { ecmaVersion
: 6 }
168 code
: "if (foo) { const bar = 'baz'; }",
170 parserOptions
: { ecmaVersion
: 6 }
173 code
: "while (foo) { let bar = 'baz'; }",
175 parserOptions
: { ecmaVersion
: 6 }
178 code
: "for(;;) { function foo() {} }",
182 code
: "for (foo in bar) { class Baz {} }",
184 parserOptions
: { ecmaVersion
: 6 }
187 code
: "if (foo) { let bar; } else { baz(); }",
188 options
: ["multi", "consistent"],
189 parserOptions
: { ecmaVersion
: 6 }
192 code
: "if (foo) { bar(); } else { const baz = 'quux'; }",
193 options
: ["multi", "consistent"],
194 parserOptions
: { ecmaVersion
: 6 }
197 code
: "if (foo) { \n const bar = 'baz'; \n }",
198 options
: ["multi-or-nest"],
199 parserOptions
: { ecmaVersion
: 6 }
202 code
: "if (foo) { \n let bar = 'baz'; \n }",
203 options
: ["multi-or-nest"],
204 parserOptions
: { ecmaVersion
: 6 }
207 code
: "if (foo) { \n function bar() {} \n }",
208 options
: ["multi-or-nest"],
209 parserOptions
: { ecmaVersion
: 6 }
212 code
: "if (foo) { \n class bar {} \n }",
213 options
: ["multi-or-nest"],
214 parserOptions
: { ecmaVersion
: 6 }
217 // https://github.com/eslint/eslint/issues/12370
219 code
: "if (foo) doSomething() \n ;",
220 options
: ["multi-or-nest"]
223 code
: "if (foo) doSomething(); \n else if (bar) doSomethingElse() \n ;",
224 options
: ["multi-or-nest"]
227 code
: "if (foo) doSomething(); \n else doSomethingElse() \n ;",
228 options
: ["multi-or-nest"]
231 code
: "if (foo) doSomething(); \n else if (bar) doSomethingElse(); \n else doAnotherThing() \n ;",
232 options
: ["multi-or-nest"]
235 code
: "for (var i = 0; foo; i++) doSomething() \n ;",
236 options
: ["multi-or-nest"]
239 code
: "for (var foo in bar) console.log(foo) \n ;",
240 options
: ["multi-or-nest"]
243 code
: "for (var foo of bar) console.log(foo) \n ;",
244 options
: ["multi-or-nest"],
245 parserOptions
: { ecmaVersion
: 6 }
248 code
: "while (foo) doSomething() \n ;",
249 options
: ["multi-or-nest"]
252 code
: "do doSomething() \n ;while (foo)",
253 options
: ["multi-or-nest"]
257 options
: ["multi-or-nest"]
260 code
: "if (foo) doSomething(); \n else if (bar)\n;",
261 options
: ["multi-or-nest"]
264 code
: "if (foo) doSomething(); \n else\n;",
265 options
: ["multi-or-nest"]
268 code
: "if (foo) doSomething(); \n else if (bar) doSomethingElse(); \n else\n;",
269 options
: ["multi-or-nest"]
272 code
: "for (var i = 0; foo; i++)\n;",
273 options
: ["multi-or-nest"]
276 code
: "for (var foo in bar)\n;",
277 options
: ["multi-or-nest"]
280 code
: "for (var foo of bar)\n;",
281 options
: ["multi-or-nest"],
282 parserOptions
: { ecmaVersion
: 6 }
285 code
: "while (foo)\n;",
286 options
: ["multi-or-nest"]
289 code
: "do\n;while (foo)",
290 options
: ["multi-or-nest"]
293 // https://github.com/eslint/eslint/issues/3856
295 code
: "if (true) { if (false) console.log(1) } else console.log(2)",
299 code
: "if (a) { if (b) console.log(1); else if (c) console.log(2) } else console.log(3)",
303 code
: "if (true) { while(false) if (true); } else;",
307 code
: "if (true) { label: if (false); } else;",
311 code
: "if (true) { with(0) if (false); } else;",
315 code
: "if (true) { while(a) if(b) while(c) if (d); else; } else;",
319 code
: "if (true) foo(); else { bar(); baz(); }",
323 code
: "if (true) { foo(); } else { bar(); baz(); }",
324 options
: ["multi", "consistent"]
327 code
: "if (true) { foo(); } else if (true) { faa(); } else { bar(); baz(); }",
328 options
: ["multi", "consistent"]
331 code
: "if (true) { foo(); faa(); } else { bar(); }",
332 options
: ["multi", "consistent"]
336 // https://github.com/feross/standard/issues/664
337 code
: "if (true) foo()\n;[1, 2, 3].bar()",
338 options
: ["multi-line"]
341 // https://github.com/eslint/eslint/issues/12928 (also in invalid[])
343 code
: "if (x) for (var i in x) { if (i > 0) console.log(i); } else console.log('whoops');",
347 code
: "if (a) { if (b) foo(); } else bar();",
351 code
: "if (a) { if (b) foo(); } else bar();",
352 options
: ["multi-or-nest"]
355 code
: "if (a) { if (b) foo(); } else { bar(); }",
356 options
: ["multi", "consistent"]
359 code
: "if (a) { if (b) foo(); } else { bar(); }",
360 options
: ["multi-or-nest", "consistent"]
363 code
: "if (a) { if (b) { foo(); bar(); } } else baz();",
367 code
: "if (a) foo(); else if (b) { if (c) bar(); } else baz();",
371 code
: "if (a) { if (b) foo(); else if (c) bar(); } else baz();",
375 code
: "if (a) if (b) foo(); else { if (c) bar(); } else baz();",
379 code
: "if (a) { lbl:if (b) foo(); } else bar();",
383 code
: "if (a) { lbl1:lbl2:if (b) foo(); } else bar();",
387 code
: "if (a) { for (;;) if (b) foo(); } else bar();",
391 code
: "if (a) { for (key in obj) if (b) foo(); } else bar();",
395 code
: "if (a) { for (elem of arr) if (b) foo(); } else bar();",
397 parserOptions
: { ecmaVersion
: 2015 }
400 code
: "if (a) { with (obj) if (b) foo(); } else bar();",
404 code
: "if (a) { while (cond) if (b) foo(); } else bar();",
408 code
: "if (a) { while (cond) for (;;) for (key in obj) if (b) foo(); } else bar();",
412 code
: "if (a) while (cond) { for (;;) for (key in obj) if (b) foo(); } else bar();",
416 code
: "if (a) while (cond) for (;;) { for (key in obj) if (b) foo(); } else bar();",
420 code
: "if (a) while (cond) for (;;) for (key in obj) { if (b) foo(); } else bar();",
426 code
: "if (foo) bar()",
427 output
: "if (foo) {bar()}",
430 messageId
: "missingCurlyAfterCondition",
431 data
: { name
: "if" },
441 code
: "if (foo) \n bar()",
442 output
: "if (foo) \n {bar()}",
445 messageId
: "missingCurlyAfterCondition",
446 data
: { name
: "if" },
456 code
: "if (foo) { bar() } else baz()",
457 output
: "if (foo) { bar() } else {baz()}",
460 messageId
: "missingCurlyAfter",
461 data
: { name
: "else" },
467 code
: "if (foo) { bar() } else if (faa) baz()",
468 output
: "if (foo) { bar() } else if (faa) {baz()}",
471 messageId
: "missingCurlyAfterCondition",
472 data
: { name
: "if" },
478 code
: "while (foo) bar()",
479 output
: "while (foo) {bar()}",
482 messageId
: "missingCurlyAfterCondition",
483 data
: { name
: "while" },
484 type
: "WhileStatement",
493 code
: "while (foo) \n bar()",
494 output
: "while (foo) \n {bar()}",
497 messageId
: "missingCurlyAfterCondition",
498 data
: { name
: "while" },
499 type
: "WhileStatement",
508 code
: "do bar(); while (foo)",
509 output
: "do {bar();} while (foo)",
512 messageId
: "missingCurlyAfter",
513 data
: { name
: "do" },
514 type
: "DoWhileStatement",
523 code
: "do \n bar(); while (foo)",
524 output
: "do \n {bar();} while (foo)",
527 messageId
: "missingCurlyAfter",
528 data
: { name
: "do" },
529 type
: "DoWhileStatement",
538 code
: "for (;foo;) bar()",
539 output
: "for (;foo;) {bar()}",
542 messageId
: "missingCurlyAfterCondition",
543 data
: { name
: "for" },
549 code
: "for (var foo in bar) console.log(foo)",
550 output
: "for (var foo in bar) {console.log(foo)}",
553 messageId
: "missingCurlyAfter",
554 data
: { name
: "for-in" },
555 type
: "ForInStatement"
560 code
: "for (var foo of bar) console.log(foo)",
561 output
: "for (var foo of bar) {console.log(foo)}",
562 parserOptions
: { ecmaVersion
: 6 },
565 messageId
: "missingCurlyAfter",
566 data
: { name
: "for-of" },
567 type
: "ForOfStatement",
576 code
: "for (var foo of bar) \n console.log(foo)",
577 output
: "for (var foo of bar) \n {console.log(foo)}",
578 parserOptions
: { ecmaVersion
: 6 },
581 messageId
: "missingCurlyAfter",
582 data
: { name
: "for-of" },
583 type
: "ForOfStatement",
592 code
: "for (a;;) console.log(foo)",
593 output
: "for (a;;) {console.log(foo)}",
594 parserOptions
: { ecmaVersion
: 6 },
597 messageId
: "missingCurlyAfterCondition",
598 data
: { name
: "for" },
599 type
: "ForStatement",
608 code
: "for (a;;) \n console.log(foo)",
609 output
: "for (a;;) \n {console.log(foo)}",
610 parserOptions
: { ecmaVersion
: 6 },
613 messageId
: "missingCurlyAfterCondition",
614 data
: { name
: "for" },
615 type
: "ForStatement",
624 code
: "for (var foo of bar) {console.log(foo)}",
625 output
: "for (var foo of bar) console.log(foo)",
627 parserOptions
: { ecmaVersion
: 6 },
630 messageId
: "unexpectedCurlyAfter",
631 data
: { name
: "for-of" },
632 type
: "ForOfStatement",
641 code
: "do{foo();} while(bar);",
642 output
: "do foo(); while(bar);",
644 parserOptions
: { ecmaVersion
: 6 },
647 messageId
: "unexpectedCurlyAfter",
648 data
: { name
: "do" },
649 type
: "DoWhileStatement",
658 code
: "for (;foo;) { bar() }",
659 output
: "for (;foo;) bar() ",
663 messageId
: "unexpectedCurlyAfterCondition",
664 data
: { name
: "for" },
665 type
: "ForStatement",
674 code
: "for (;foo;) \n bar()",
675 output
: "for (;foo;) \n {bar()}",
678 data
: { name
: "for" },
679 type
: "ForStatement",
680 messageId
: "missingCurlyAfterCondition",
689 code
: "if (foo) { bar() }",
690 output
: "if (foo) bar() ",
694 messageId
: "unexpectedCurlyAfterCondition",
695 data
: { name
: "if" },
705 code
: "if (foo) if (bar) { baz() }",
706 output
: "if (foo) if (bar) baz() ",
710 messageId
: "unexpectedCurlyAfterCondition",
711 data
: { name
: "if" },
717 code
: "if (foo) if (bar) baz(); else if (quux) { quuux(); }",
718 output
: "if (foo) if (bar) baz(); else if (quux) quuux(); ",
722 messageId
: "unexpectedCurlyAfterCondition",
723 data
: { name
: "if" },
729 code
: "while (foo) { bar() }",
730 output
: "while (foo) bar() ",
734 messageId
: "unexpectedCurlyAfterCondition",
735 data
: { name
: "while" },
736 type
: "WhileStatement",
745 code
: "if (foo) baz(); else { bar() }",
746 output
: "if (foo) baz(); else bar() ",
750 messageId
: "unexpectedCurlyAfter",
751 data
: { name
: "else" },
757 code
: "if (foo) if (bar); else { baz() }",
758 output
: "if (foo) if (bar); else baz() ",
762 messageId
: "unexpectedCurlyAfter",
763 data
: { name
: "else" },
769 code
: "if (true) { if (false) console.log(1) }",
770 output
: "if (true) if (false) console.log(1) ",
774 messageId
: "unexpectedCurlyAfterCondition",
775 data
: { name
: "if" },
781 code
: "if (a) { if (b) console.log(1); else console.log(2) } else console.log(3)",
786 messageId
: "unexpectedCurlyAfterCondition",
787 data
: { name
: "if" },
822 messageId
: "unexpectedCurlyAfter",
823 data
: { name
: "else" },
833 code
: "for (var foo in bar) { console.log(foo) }",
834 output
: "for (var foo in bar) console.log(foo) ",
838 messageId
: "unexpectedCurlyAfter",
839 data
: { name
: "for-in" },
840 type
: "ForInStatement",
849 code
: "for (var foo of bar) { console.log(foo) }",
850 output
: "for (var foo of bar) console.log(foo) ",
852 parserOptions
: { ecmaVersion
: 6 },
855 messageId
: "unexpectedCurlyAfter",
856 data
: { name
: "for-of" },
857 type
: "ForOfStatement"
862 code
: "if (foo) \n baz()",
863 output
: "if (foo) \n {baz()}",
864 options
: ["multi-line"],
867 messageId
: "missingCurlyAfterCondition",
868 data
: { name
: "if" },
878 code
: "if (foo) baz()",
879 output
: "if (foo) {baz()}",
882 messageId
: "missingCurlyAfterCondition",
883 data
: { name
: "if" },
893 code
: "while (foo) \n baz()",
894 output
: "while (foo) \n {baz()}",
895 options
: ["multi-line"],
898 messageId
: "missingCurlyAfterCondition",
899 data
: { name
: "while" },
900 type
: "WhileStatement"
905 code
: "for (;foo;) \n bar()",
906 output
: "for (;foo;) \n {bar()}",
907 options
: ["multi-line"],
910 messageId
: "missingCurlyAfterCondition",
911 data
: { name
: "for" },
917 code
: "while (bar && \n baz) \n foo()",
918 output
: "while (bar && \n baz) \n {foo()}",
919 options
: ["multi-line"],
922 messageId
: "missingCurlyAfterCondition",
923 data
: { name
: "while" },
924 type
: "WhileStatement"
929 code
: "if (foo) bar(baz, \n baz)",
930 output
: "if (foo) {bar(baz, \n baz)}",
931 options
: ["multi-line"],
934 messageId
: "missingCurlyAfterCondition",
935 data
: { name
: "if" },
941 code
: "do foo(); while (bar)",
942 output
: "do {foo();} while (bar)",
946 messageId
: "missingCurlyAfter",
947 data
: { name
: "do" },
948 type
: "DoWhileStatement",
957 code
: "do \n foo(); \n while (bar)",
958 output
: "do \n {foo();} \n while (bar)",
959 options
: ["multi-line"],
962 messageId
: "missingCurlyAfter",
963 data
: { name
: "do" },
964 type
: "DoWhileStatement",
973 code
: "for (var foo in bar) {console.log(foo)}",
974 output
: "for (var foo in bar) console.log(foo)",
978 messageId
: "unexpectedCurlyAfter",
979 data
: { name
: "for-in" },
980 type
: "ForInStatement",
989 code
: "for (var foo in bar) \n console.log(foo)",
990 output
: "for (var foo in bar) \n {console.log(foo)}",
991 options
: ["multi-line"],
994 messageId
: "missingCurlyAfter",
995 data
: { name
: "for-in" },
996 type
: "ForInStatement"
1001 code
: "for (var foo in bar) \n console.log(1); \n console.log(2)",
1002 output
: "for (var foo in bar) \n {console.log(1);} \n console.log(2)",
1003 options
: ["multi-line"],
1006 messageId
: "missingCurlyAfter",
1007 data
: { name
: "for-in" },
1008 type
: "ForInStatement"
1013 code
: "for (var foo of bar) \n console.log(foo)",
1014 output
: "for (var foo of bar) \n {console.log(foo)}",
1015 options
: ["multi-line"],
1016 parserOptions
: { ecmaVersion
: 6 },
1019 messageId
: "missingCurlyAfter",
1020 data
: { name
: "for-of" },
1021 type
: "ForOfStatement",
1030 code
: "for (var foo of bar) \n console.log(1); \n console.log(2)",
1031 output
: "for (var foo of bar) \n {console.log(1);} \n console.log(2)",
1032 options
: ["multi-line"],
1033 parserOptions
: { ecmaVersion
: 6 },
1036 messageId
: "missingCurlyAfter",
1037 data
: { name
: "for-of" },
1038 type
: "ForOfStatement"
1043 code
: "if (foo) \n quz = { \n bar: baz, \n qux: foo \n };",
1044 output
: "if (foo) \n {quz = { \n bar: baz, \n qux: foo \n };}",
1045 options
: ["multi-or-nest"],
1048 messageId
: "missingCurlyAfterCondition",
1049 data
: { name
: "if" },
1055 code
: "while (true) \n if (foo) \n doSomething(); \n else \n doSomethingElse(); \n",
1056 output
: "while (true) \n {if (foo) \n doSomething(); \n else \n doSomethingElse();} \n",
1057 options
: ["multi-or-nest"],
1060 messageId
: "missingCurlyAfterCondition",
1061 data
: { name
: "while" },
1062 type
: "WhileStatement"
1067 code
: "if (foo) { \n quz = true; \n }",
1068 output
: "if (foo) \n quz = true; \n ",
1069 options
: ["multi-or-nest"],
1072 messageId
: "unexpectedCurlyAfterCondition",
1073 data
: { name
: "if" },
1079 code
: "if (foo) { var bar = 'baz'; }",
1080 output
: "if (foo) var bar = 'baz'; ",
1084 messageId
: "unexpectedCurlyAfterCondition",
1085 data
: { name
: "if" },
1091 code
: "if (foo) { let bar; } else baz();",
1092 output
: "if (foo) { let bar; } else {baz();}",
1093 options
: ["multi", "consistent"],
1094 parserOptions
: { ecmaVersion
: 6 },
1097 messageId
: "missingCurlyAfter",
1098 data
: { name
: "else" },
1104 code
: "if (foo) bar(); else { const baz = 'quux' }",
1105 output
: "if (foo) {bar();} else { const baz = 'quux' }",
1106 options
: ["multi", "consistent"],
1107 parserOptions
: { ecmaVersion
: 6 },
1110 messageId
: "missingCurlyAfterCondition",
1111 data
: { name
: "if" },
1117 code
: "if (foo) { \n var bar = 'baz'; \n }",
1118 output
: "if (foo) \n var bar = 'baz'; \n ",
1119 options
: ["multi-or-nest"],
1122 messageId
: "unexpectedCurlyAfterCondition",
1123 data
: { name
: "if" },
1129 code
: "while (true) { \n doSomething(); \n }",
1130 output
: "while (true) \n doSomething(); \n ",
1131 options
: ["multi-or-nest"],
1134 messageId
: "unexpectedCurlyAfterCondition",
1135 data
: { name
: "while" },
1136 type
: "WhileStatement"
1141 code
: "for (var i = 0; foo; i++) { \n doSomething(); \n }",
1142 output
: "for (var i = 0; foo; i++) \n doSomething(); \n ",
1143 options
: ["multi-or-nest"],
1146 messageId
: "unexpectedCurlyAfterCondition",
1147 data
: { name
: "for" },
1148 type
: "ForStatement",
1157 code
: "for (var foo in bar) if (foo) console.log(1); else console.log(2);",
1158 output
: "for (var foo in bar) {if (foo) console.log(1); else console.log(2);}",
1162 messageId
: "missingCurlyAfter",
1163 data
: { name
: "for-in" },
1164 type
: "ForInStatement",
1171 messageId
: "missingCurlyAfterCondition",
1172 data
: { name
: "if" },
1173 type
: "IfStatement",
1180 messageId
: "missingCurlyAfter",
1181 data
: { name
: "else" },
1182 type
: "IfStatement",
1191 code
: "for (var foo in bar) \n if (foo) console.log(1); \n else console.log(2);",
1192 output
: "for (var foo in bar) \n {if (foo) console.log(1); \n else console.log(2);}",
1193 options
: ["multi-or-nest"],
1196 messageId
: "missingCurlyAfter",
1197 data
: { name
: "for-in" },
1198 type
: "ForInStatement",
1207 code
: "for (var foo in bar) { if (foo) console.log(1) }",
1208 output
: "for (var foo in bar) if (foo) console.log(1) ",
1209 options
: ["multi-or-nest"],
1212 messageId
: "unexpectedCurlyAfter",
1213 data
: { name
: "for-in" },
1214 type
: "ForInStatement"
1219 code
: "for (var foo of bar) \n if (foo) console.log(1); \n else console.log(2);",
1220 output
: "for (var foo of bar) \n {if (foo) console.log(1); \n else console.log(2);}",
1221 options
: ["multi-or-nest"],
1222 parserOptions
: { ecmaVersion
: 6 },
1225 messageId
: "missingCurlyAfter",
1226 data
: { name
: "for-of" },
1227 type
: "ForOfStatement"
1232 code
: "for (var foo of bar) { if (foo) console.log(1) }",
1233 output
: "for (var foo of bar) if (foo) console.log(1) ",
1234 options
: ["multi-or-nest"],
1235 parserOptions
: { ecmaVersion
: 6 },
1238 messageId
: "unexpectedCurlyAfter",
1239 data
: { name
: "for-of" },
1240 type
: "ForOfStatement"
1245 code
: "if (true) foo(); \n else { \n bar(); \n baz(); \n }",
1246 output
: "if (true) {foo();} \n else { \n bar(); \n baz(); \n }",
1247 options
: ["multi", "consistent"],
1250 messageId
: "missingCurlyAfterCondition",
1251 data
: { name
: "if" },
1257 code
: "if (true) { foo(); faa(); }\n else bar();",
1258 output
: "if (true) { foo(); faa(); }\n else {bar();}",
1259 options
: ["multi", "consistent"],
1262 messageId
: "missingCurlyAfter",
1263 data
: { name
: "else" },
1269 code
: "if (true) foo(); else { baz(); }",
1270 output
: "if (true) foo(); else baz(); ",
1271 options
: ["multi", "consistent"],
1274 messageId
: "unexpectedCurlyAfter",
1275 data
: { name
: "else" },
1276 type
: "IfStatement",
1285 code
: "if (true) foo(); else if (true) faa(); else { bar(); baz(); }",
1286 output
: "if (true) {foo();} else if (true) {faa();} else { bar(); baz(); }",
1287 options
: ["multi", "consistent"],
1290 messageId
: "missingCurlyAfterCondition",
1291 data
: { name
: "if" },
1295 messageId
: "missingCurlyAfterCondition",
1296 data
: { name
: "if" },
1302 code
: "if (true) if (true) foo(); else { bar(); baz(); }",
1303 output
: "if (true) if (true) {foo();} else { bar(); baz(); }",
1304 options
: ["multi", "consistent"],
1307 messageId
: "missingCurlyAfterCondition",
1308 data
: { name
: "if" },
1314 code
: "do{foo();} while (bar)",
1315 output
: "do foo(); while (bar)",
1319 messageId
: "unexpectedCurlyAfter",
1320 data
: { name
: "do" },
1321 type
: "DoWhileStatement"
1326 code
: "do\n{foo();} while (bar)",
1327 output
: "do\nfoo(); while (bar)",
1331 messageId
: "unexpectedCurlyAfter",
1332 data
: { name
: "do" },
1333 type
: "DoWhileStatement",
1342 code
: "while (bar) { foo(); }",
1343 output
: "while (bar) foo(); ",
1347 messageId
: "unexpectedCurlyAfterCondition",
1348 data
: { name
: "while" },
1349 type
: "WhileStatement",
1358 code
: "while (bar) \n{\n foo(); }",
1359 output
: "while (bar) \n\n foo(); ",
1363 messageId
: "unexpectedCurlyAfterCondition",
1364 data
: { name
: "while" },
1365 type
: "WhileStatement",
1374 code
: "for (;;) { foo(); }",
1375 output
: "for (;;) foo(); ",
1379 messageId
: "unexpectedCurlyAfterCondition",
1380 data
: { name
: "for" },
1381 type
: "ForStatement",
1390 code
: "do{[1, 2, 3].map(bar);} while (bar)",
1391 output
: "do[1, 2, 3].map(bar); while (bar)",
1395 messageId
: "unexpectedCurlyAfter",
1396 data
: { name
: "do" },
1397 type
: "DoWhileStatement"
1402 code
: "if (foo) {bar()} baz()",
1407 messageId
: "unexpectedCurlyAfterCondition",
1408 data
: { name
: "if" },
1414 code
: "do {foo();} while (bar)",
1415 output
: "do foo(); while (bar)",
1419 messageId
: "unexpectedCurlyAfter",
1420 data
: { name
: "do" },
1421 type
: "DoWhileStatement"
1426 // Don't remove curly braces if it would cause issues due to ASI.
1428 code
: "if (foo) { bar }\n++baz;",
1431 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1434 code
: "if (foo) { bar; }\n++baz;",
1435 output
: "if (foo) bar; \n++baz;",
1437 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1440 code
: "if (foo) { bar++ }\nbaz;",
1443 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1446 code
: "if (foo) { bar }\n[1, 2, 3].map(foo);",
1449 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1452 code
: "if (foo) { bar }\n(1).toString();",
1455 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1458 code
: "if (foo) { bar }\n/regex/.test('foo');",
1461 parserOptions
: { ecmaVersion
: 6 },
1462 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1465 code
: "if (foo) { bar }\nBaz();",
1466 output
: "if (foo) bar \nBaz();",
1468 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1486 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1489 code
: "if (foo) { while (bar) {} } else {}",
1490 output
: "if (foo) while (bar) {} else {}",
1492 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1495 code
: "if (foo) { var foo = () => {} } else {}",
1498 parserOptions
: { ecmaVersion
: 6 },
1499 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1502 code
: "if (foo) { var foo = function() {} } else {}",
1505 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1508 code
: "if (foo) { var foo = function*() {} } else {}",
1511 parserOptions
: { ecmaVersion
: 6 },
1512 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1515 code
: "if (true)\nfoo()\n;[1, 2, 3].bar()",
1516 output
: "if (true)\n{foo()\n;}[1, 2, 3].bar()",
1517 options
: ["multi-line"],
1518 errors
: [{ messageId
: "missingCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1521 // https://github.com/eslint/eslint/issues/12370
1523 code
: "if (foo) {\ndoSomething()\n;\n}",
1524 output
: "if (foo) \ndoSomething()\n;\n",
1525 options
: ["multi-or-nest"],
1526 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1529 code
: "if (foo) doSomething();\nelse if (bar) {\ndoSomethingElse()\n;\n}",
1530 output
: "if (foo) doSomething();\nelse if (bar) \ndoSomethingElse()\n;\n",
1531 options
: ["multi-or-nest"],
1532 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1535 code
: "if (foo) doSomething();\nelse {\ndoSomethingElse()\n;\n}",
1536 output
: "if (foo) doSomething();\nelse \ndoSomethingElse()\n;\n",
1537 options
: ["multi-or-nest"],
1538 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "else" }, type
: "IfStatement" }]
1541 code
: "for (var i = 0; foo; i++) {\ndoSomething()\n;\n}",
1542 output
: "for (var i = 0; foo; i++) \ndoSomething()\n;\n",
1543 options
: ["multi-or-nest"],
1544 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "for" }, type
: "ForStatement" }]
1547 code
: "for (var foo in bar) {\ndoSomething()\n;\n}",
1548 output
: "for (var foo in bar) \ndoSomething()\n;\n",
1549 options
: ["multi-or-nest"],
1550 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "for-in" }, type
: "ForInStatement" }]
1553 code
: "for (var foo of bar) {\ndoSomething()\n;\n}",
1554 output
: "for (var foo of bar) \ndoSomething()\n;\n",
1555 options
: ["multi-or-nest"],
1556 parserOptions
: { ecmaVersion
: 6 },
1557 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "for-of" }, type
: "ForOfStatement" }]
1560 code
: "while (foo) {\ndoSomething()\n;\n}",
1561 output
: "while (foo) \ndoSomething()\n;\n",
1562 options
: ["multi-or-nest"],
1563 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1566 code
: "do {\ndoSomething()\n;\n} while (foo)",
1567 output
: "do \ndoSomething()\n;\n while (foo)",
1568 options
: ["multi-or-nest"],
1569 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "do" }, type
: "DoWhileStatement" }]
1572 // https://github.com/eslint/eslint/issues/12928 (also in valid[])
1574 code
: "if (a) { if (b) foo(); }",
1575 output
: "if (a) if (b) foo(); ",
1577 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1580 code
: "if (a) { if (b) foo(); else bar(); }",
1581 output
: "if (a) if (b) foo(); else bar(); ",
1583 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1586 code
: "if (a) { if (b) foo(); else bar(); } baz();",
1587 output
: "if (a) if (b) foo(); else bar(); baz();",
1589 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1592 code
: "if (a) { while (cond) if (b) foo(); }",
1593 output
: "if (a) while (cond) if (b) foo(); ",
1595 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1598 code
: "if (a) while (cond) { if (b) foo(); }",
1599 output
: "if (a) while (cond) if (b) foo(); ",
1601 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1604 code
: "if (a) while (cond) { if (b) foo(); else bar(); }",
1605 output
: "if (a) while (cond) if (b) foo(); else bar(); ",
1607 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1610 code
: "if (a) { while (cond) { if (b) foo(); } bar(); baz() } else quux();",
1611 output
: "if (a) { while (cond) if (b) foo(); bar(); baz() } else quux();",
1613 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1616 code
: "if (a) { if (b) foo(); } bar();",
1617 output
: "if (a) if (b) foo(); bar();",
1619 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1622 code
: "if(a) { if (b) foo(); } if (c) bar(); else baz();",
1623 output
: "if(a) if (b) foo(); if (c) bar(); else baz();",
1624 options
: ["multi-or-nest"],
1625 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1628 code
: "if (a) { do if (b) foo(); while (cond); } else bar();",
1629 output
: "if (a) do if (b) foo(); while (cond); else bar();",
1631 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1634 code
: "if (a) do { if (b) foo(); } while (cond); else bar();",
1635 output
: "if (a) do if (b) foo(); while (cond); else bar();",
1637 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "do" }, type
: "DoWhileStatement" }]
1640 code
: "if (a) { if (b) foo(); else bar(); } else baz();",
1641 output
: "if (a) if (b) foo(); else bar(); else baz();",
1643 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1646 code
: "if (a) while (cond) { bar(); } else baz();",
1647 output
: "if (a) while (cond) bar(); else baz();",
1649 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1652 code
: "if (a) { for (;;); } else bar();",
1653 output
: "if (a) for (;;); else bar();",
1655 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1658 code
: "if (a) { while (cond) if (b) foo() } else bar();",
1659 output
: "if (a) { while (cond) if (b) foo() } else {bar();}",
1660 options
: ["multi", "consistent"],
1663 messageId
: "missingCurlyAfter",
1664 data
: { name
: "else" },
1665 type
: "IfStatement",
1674 code
: "if (a) while (cond) if (b) foo() \nelse\n {bar();}",
1675 output
: "if (a) while (cond) if (b) foo() \nelse\n bar();",
1676 options
: ["multi", "consistent"],
1679 messageId
: "unexpectedCurlyAfter",
1680 data
: { name
: "else" },
1681 type
: "IfStatement",
1690 code
: "if (a) foo() \nelse\n bar();",
1691 output
: "if (a) {foo()} \nelse\n {bar();}",
1693 type
: "IfStatement",
1694 messageId
: "missingCurlyAfterCondition",
1701 type
: "IfStatement",
1702 messageId
: "missingCurlyAfter",
1710 code
: "if (a) { while (cond) if (b) foo() } ",
1711 output
: "if (a) while (cond) if (b) foo() ",
1712 options
: ["multi", "consistent"],
1714 messageId
: "unexpectedCurlyAfterCondition",
1715 data
: { name
: "if" },
1716 type
: "IfStatement",
1724 code
: "if(a) { if (b) foo(); } if (c) bar(); else if(foo){bar();}",
1725 output
: "if(a) if (b) foo(); if (c) bar(); else if(foo)bar();",
1726 options
: ["multi-or-nest"],
1728 type
: "IfStatement",
1729 data
: { name
: "if" },
1730 messageId
: "unexpectedCurlyAfterCondition",
1737 type
: "IfStatement",
1738 data
: { name
: "if" },
1739 messageId
: "unexpectedCurlyAfterCondition",
1747 code
: "if (true) [1, 2, 3]\n.bar()",
1748 output
: "if (true) {[1, 2, 3]\n.bar()}",
1749 options
: ["multi-line"],
1751 data
: { name
: "if" },
1752 type
: "IfStatement",
1753 messageId
: "missingCurlyAfterCondition",
1761 code
: "for(\n;\n;\n) {foo()}",
1762 output
: "for(\n;\n;\n) foo()",
1765 data
: { name
: "for" },
1766 type
: "ForStatement",
1767 messageId
: "unexpectedCurlyAfterCondition",
1775 code
: "for(\n;\n;\n) \nfoo()\n",
1776 output
: "for(\n;\n;\n) \n{foo()}\n",
1777 options
: ["multi-line"],
1779 data
: { name
: "for" },
1780 type
: "ForStatement",
1781 messageId
: "missingCurlyAfterCondition",
1791 * Reports 2 errors, but one pair of braces is necessary if the other pair gets removed.
1792 * Auto-fix will remove only outer braces in the first iteration.
1793 * After that, the inner braces will become valid and won't be removed in the second iteration.
1794 * If user manually removes inner braces first, the outer braces will become valid.
1796 code
: "if (a) { while (cond) { if (b) foo(); } } else bar();",
1797 output
: "if (a) while (cond) { if (b) foo(); } else bar();",
1800 { messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" },
1801 { messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }
1805 code
: "for(;;)foo()\n",
1806 output
: "for(;;){foo()}\n",
1808 data
: { name
: "for" },
1809 type
: "ForStatement",
1810 messageId
: "missingCurlyAfterCondition",
1818 code
: "for(var \ni \n in \n z)foo()\n",
1819 output
: "for(var \ni \n in \n z){foo()}\n",
1821 data
: { name
: "for-in" },
1822 type
: "ForInStatement",
1823 messageId
: "missingCurlyAfter",
1831 code
: "for(var i of \n z)\nfoo()\n",
1832 output
: "for(var i of \n z)\n{foo()}\n",
1833 parserOptions
: { ecmaVersion
: 6 },
1835 data
: { name
: "for-of" },
1836 type
: "ForOfStatement",
1837 messageId
: "missingCurlyAfter",