]>
git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/lib/rules/curly.js
155eec994dac7c15482d1c4c465ce10e7995dd45
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" },
437 code
: "if (foo) { bar() } else baz()",
438 output
: "if (foo) { bar() } else {baz()}",
441 messageId
: "missingCurlyAfter",
442 data
: { name
: "else" },
448 code
: "if (foo) { bar() } else if (faa) baz()",
449 output
: "if (foo) { bar() } else if (faa) {baz()}",
452 messageId
: "missingCurlyAfterCondition",
453 data
: { name
: "if" },
459 code
: "while (foo) bar()",
460 output
: "while (foo) {bar()}",
463 messageId
: "missingCurlyAfterCondition",
464 data
: { name
: "while" },
465 type
: "WhileStatement"
470 code
: "do bar(); while (foo)",
471 output
: "do {bar();} while (foo)",
474 messageId
: "missingCurlyAfter",
475 data
: { name
: "do" },
476 type
: "DoWhileStatement"
481 code
: "for (;foo;) bar()",
482 output
: "for (;foo;) {bar()}",
485 messageId
: "missingCurlyAfterCondition",
486 data
: { name
: "for" },
492 code
: "for (var foo in bar) console.log(foo)",
493 output
: "for (var foo in bar) {console.log(foo)}",
496 messageId
: "missingCurlyAfter",
497 data
: { name
: "for-in" },
498 type
: "ForInStatement"
503 code
: "for (var foo of bar) console.log(foo)",
504 output
: "for (var foo of bar) {console.log(foo)}",
505 parserOptions
: { ecmaVersion
: 6 },
508 messageId
: "missingCurlyAfter",
509 data
: { name
: "for-of" },
510 type
: "ForOfStatement"
515 code
: "for (;foo;) { bar() }",
516 output
: "for (;foo;) bar() ",
520 messageId
: "unexpectedCurlyAfterCondition",
521 data
: { name
: "for" },
527 code
: "if (foo) { bar() }",
528 output
: "if (foo) bar() ",
532 messageId
: "unexpectedCurlyAfterCondition",
533 data
: { name
: "if" },
539 code
: "if (foo) if (bar) { baz() }",
540 output
: "if (foo) if (bar) baz() ",
544 messageId
: "unexpectedCurlyAfterCondition",
545 data
: { name
: "if" },
551 code
: "if (foo) if (bar) baz(); else if (quux) { quuux(); }",
552 output
: "if (foo) if (bar) baz(); else if (quux) quuux(); ",
556 messageId
: "unexpectedCurlyAfterCondition",
557 data
: { name
: "if" },
563 code
: "while (foo) { bar() }",
564 output
: "while (foo) bar() ",
568 messageId
: "unexpectedCurlyAfterCondition",
569 data
: { name
: "while" },
570 type
: "WhileStatement"
575 code
: "if (foo) baz(); else { bar() }",
576 output
: "if (foo) baz(); else bar() ",
580 messageId
: "unexpectedCurlyAfter",
581 data
: { name
: "else" },
587 code
: "if (foo) if (bar); else { baz() }",
588 output
: "if (foo) if (bar); else baz() ",
592 messageId
: "unexpectedCurlyAfter",
593 data
: { name
: "else" },
599 code
: "if (true) { if (false) console.log(1) }",
600 output
: "if (true) if (false) console.log(1) ",
604 messageId
: "unexpectedCurlyAfterCondition",
605 data
: { name
: "if" },
611 code
: "if (a) { if (b) console.log(1); else console.log(2) } else console.log(3)",
616 messageId
: "unexpectedCurlyAfterCondition",
617 data
: { name
: "if" },
652 messageId
: "unexpectedCurlyAfter",
653 data
: { name
: "else" },
661 code
: "for (var foo in bar) { console.log(foo) }",
662 output
: "for (var foo in bar) console.log(foo) ",
666 messageId
: "unexpectedCurlyAfter",
667 data
: { name
: "for-in" },
668 type
: "ForInStatement"
673 code
: "for (var foo of bar) { console.log(foo) }",
674 output
: "for (var foo of bar) console.log(foo) ",
676 parserOptions
: { ecmaVersion
: 6 },
679 messageId
: "unexpectedCurlyAfter",
680 data
: { name
: "for-of" },
681 type
: "ForOfStatement"
686 code
: "if (foo) \n baz()",
687 output
: "if (foo) \n {baz()}",
688 options
: ["multi-line"],
691 messageId
: "missingCurlyAfterCondition",
692 data
: { name
: "if" },
698 code
: "while (foo) \n baz()",
699 output
: "while (foo) \n {baz()}",
700 options
: ["multi-line"],
703 messageId
: "missingCurlyAfterCondition",
704 data
: { name
: "while" },
705 type
: "WhileStatement"
710 code
: "for (;foo;) \n bar()",
711 output
: "for (;foo;) \n {bar()}",
712 options
: ["multi-line"],
715 messageId
: "missingCurlyAfterCondition",
716 data
: { name
: "for" },
722 code
: "while (bar && \n baz) \n foo()",
723 output
: "while (bar && \n baz) \n {foo()}",
724 options
: ["multi-line"],
727 messageId
: "missingCurlyAfterCondition",
728 data
: { name
: "while" },
729 type
: "WhileStatement"
734 code
: "if (foo) bar(baz, \n baz)",
735 output
: "if (foo) {bar(baz, \n baz)}",
736 options
: ["multi-line"],
739 messageId
: "missingCurlyAfterCondition",
740 data
: { name
: "if" },
746 code
: "do \n foo(); \n while (bar)",
747 output
: "do \n {foo();} \n while (bar)",
748 options
: ["multi-line"],
751 messageId
: "missingCurlyAfter",
752 data
: { name
: "do" },
753 type
: "DoWhileStatement"
758 code
: "for (var foo in bar) \n console.log(foo)",
759 output
: "for (var foo in bar) \n {console.log(foo)}",
760 options
: ["multi-line"],
763 messageId
: "missingCurlyAfter",
764 data
: { name
: "for-in" },
765 type
: "ForInStatement"
770 code
: "for (var foo in bar) \n console.log(1); \n console.log(2)",
771 output
: "for (var foo in bar) \n {console.log(1);} \n console.log(2)",
772 options
: ["multi-line"],
775 messageId
: "missingCurlyAfter",
776 data
: { name
: "for-in" },
777 type
: "ForInStatement"
782 code
: "for (var foo of bar) \n console.log(foo)",
783 output
: "for (var foo of bar) \n {console.log(foo)}",
784 options
: ["multi-line"],
785 parserOptions
: { ecmaVersion
: 6 },
788 messageId
: "missingCurlyAfter",
789 data
: { name
: "for-of" },
790 type
: "ForOfStatement"
795 code
: "for (var foo of bar) \n console.log(1); \n console.log(2)",
796 output
: "for (var foo of bar) \n {console.log(1);} \n console.log(2)",
797 options
: ["multi-line"],
798 parserOptions
: { ecmaVersion
: 6 },
801 messageId
: "missingCurlyAfter",
802 data
: { name
: "for-of" },
803 type
: "ForOfStatement"
808 code
: "if (foo) \n quz = { \n bar: baz, \n qux: foo \n };",
809 output
: "if (foo) \n {quz = { \n bar: baz, \n qux: foo \n };}",
810 options
: ["multi-or-nest"],
813 messageId
: "missingCurlyAfterCondition",
814 data
: { name
: "if" },
820 code
: "while (true) \n if (foo) \n doSomething(); \n else \n doSomethingElse(); \n",
821 output
: "while (true) \n {if (foo) \n doSomething(); \n else \n doSomethingElse();} \n",
822 options
: ["multi-or-nest"],
825 messageId
: "missingCurlyAfterCondition",
826 data
: { name
: "while" },
827 type
: "WhileStatement"
832 code
: "if (foo) { \n quz = true; \n }",
833 output
: "if (foo) \n quz = true; \n ",
834 options
: ["multi-or-nest"],
837 messageId
: "unexpectedCurlyAfterCondition",
838 data
: { name
: "if" },
844 code
: "if (foo) { var bar = 'baz'; }",
845 output
: "if (foo) var bar = 'baz'; ",
849 messageId
: "unexpectedCurlyAfterCondition",
850 data
: { name
: "if" },
856 code
: "if (foo) { let bar; } else baz();",
857 output
: "if (foo) { let bar; } else {baz();}",
858 options
: ["multi", "consistent"],
859 parserOptions
: { ecmaVersion
: 6 },
862 messageId
: "missingCurlyAfter",
863 data
: { name
: "else" },
869 code
: "if (foo) bar(); else { const baz = 'quux' }",
870 output
: "if (foo) {bar();} else { const baz = 'quux' }",
871 options
: ["multi", "consistent"],
872 parserOptions
: { ecmaVersion
: 6 },
875 messageId
: "missingCurlyAfterCondition",
876 data
: { name
: "if" },
882 code
: "if (foo) { \n var bar = 'baz'; \n }",
883 output
: "if (foo) \n var bar = 'baz'; \n ",
884 options
: ["multi-or-nest"],
887 messageId
: "unexpectedCurlyAfterCondition",
888 data
: { name
: "if" },
894 code
: "while (true) { \n doSomething(); \n }",
895 output
: "while (true) \n doSomething(); \n ",
896 options
: ["multi-or-nest"],
899 messageId
: "unexpectedCurlyAfterCondition",
900 data
: { name
: "while" },
901 type
: "WhileStatement"
906 code
: "for (var i = 0; foo; i++) { \n doSomething(); \n }",
907 output
: "for (var i = 0; foo; i++) \n doSomething(); \n ",
908 options
: ["multi-or-nest"],
911 messageId
: "unexpectedCurlyAfterCondition",
912 data
: { name
: "for" },
918 code
: "for (var foo in bar) \n if (foo) console.log(1); \n else console.log(2);",
919 output
: "for (var foo in bar) \n {if (foo) console.log(1); \n else console.log(2);}",
920 options
: ["multi-or-nest"],
923 messageId
: "missingCurlyAfter",
924 data
: { name
: "for-in" },
925 type
: "ForInStatement"
930 code
: "for (var foo in bar) { if (foo) console.log(1) }",
931 output
: "for (var foo in bar) if (foo) console.log(1) ",
932 options
: ["multi-or-nest"],
935 messageId
: "unexpectedCurlyAfter",
936 data
: { name
: "for-in" },
937 type
: "ForInStatement"
942 code
: "for (var foo of bar) \n if (foo) console.log(1); \n else console.log(2);",
943 output
: "for (var foo of bar) \n {if (foo) console.log(1); \n else console.log(2);}",
944 options
: ["multi-or-nest"],
945 parserOptions
: { ecmaVersion
: 6 },
948 messageId
: "missingCurlyAfter",
949 data
: { name
: "for-of" },
950 type
: "ForOfStatement"
955 code
: "for (var foo of bar) { if (foo) console.log(1) }",
956 output
: "for (var foo of bar) if (foo) console.log(1) ",
957 options
: ["multi-or-nest"],
958 parserOptions
: { ecmaVersion
: 6 },
961 messageId
: "unexpectedCurlyAfter",
962 data
: { name
: "for-of" },
963 type
: "ForOfStatement"
968 code
: "if (true) foo(); \n else { \n bar(); \n baz(); \n }",
969 output
: "if (true) {foo();} \n else { \n bar(); \n baz(); \n }",
970 options
: ["multi", "consistent"],
973 messageId
: "missingCurlyAfterCondition",
974 data
: { name
: "if" },
980 code
: "if (true) { foo(); faa(); }\n else bar();",
981 output
: "if (true) { foo(); faa(); }\n else {bar();}",
982 options
: ["multi", "consistent"],
985 messageId
: "missingCurlyAfter",
986 data
: { name
: "else" },
992 code
: "if (true) foo(); else { baz(); }",
993 output
: "if (true) foo(); else baz(); ",
994 options
: ["multi", "consistent"],
997 messageId
: "unexpectedCurlyAfter",
998 data
: { name
: "else" },
1004 code
: "if (true) foo(); else if (true) faa(); else { bar(); baz(); }",
1005 output
: "if (true) {foo();} else if (true) {faa();} else { bar(); baz(); }",
1006 options
: ["multi", "consistent"],
1009 messageId
: "missingCurlyAfterCondition",
1010 data
: { name
: "if" },
1014 messageId
: "missingCurlyAfterCondition",
1015 data
: { name
: "if" },
1021 code
: "if (true) if (true) foo(); else { bar(); baz(); }",
1022 output
: "if (true) if (true) {foo();} else { bar(); baz(); }",
1023 options
: ["multi", "consistent"],
1026 messageId
: "missingCurlyAfterCondition",
1027 data
: { name
: "if" },
1033 code
: "do{foo();} while (bar)",
1034 output
: "do foo(); while (bar)",
1038 messageId
: "unexpectedCurlyAfter",
1039 data
: { name
: "do" },
1040 type
: "DoWhileStatement"
1045 code
: "do{[1, 2, 3].map(bar);} while (bar)",
1046 output
: "do[1, 2, 3].map(bar); while (bar)",
1050 messageId
: "unexpectedCurlyAfter",
1051 data
: { name
: "do" },
1052 type
: "DoWhileStatement"
1057 code
: "if (foo) {bar()} baz()",
1062 messageId
: "unexpectedCurlyAfterCondition",
1063 data
: { name
: "if" },
1069 code
: "do {foo();} while (bar)",
1070 output
: "do foo(); while (bar)",
1074 messageId
: "unexpectedCurlyAfter",
1075 data
: { name
: "do" },
1076 type
: "DoWhileStatement"
1081 // Don't remove curly braces if it would cause issues due to ASI.
1083 code
: "if (foo) { bar }\n++baz;",
1086 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1089 code
: "if (foo) { bar; }\n++baz;",
1090 output
: "if (foo) bar; \n++baz;",
1092 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1095 code
: "if (foo) { bar++ }\nbaz;",
1098 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1101 code
: "if (foo) { bar }\n[1, 2, 3].map(foo);",
1104 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1107 code
: "if (foo) { bar }\n(1).toString();",
1110 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1113 code
: "if (foo) { bar }\n/regex/.test('foo');",
1116 parserOptions
: { ecmaVersion
: 6 },
1117 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1120 code
: "if (foo) { bar }\nBaz();",
1121 output
: "if (foo) bar \nBaz();",
1123 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1141 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1144 code
: "if (foo) { while (bar) {} } else {}",
1145 output
: "if (foo) while (bar) {} else {}",
1147 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1150 code
: "if (foo) { var foo = () => {} } else {}",
1153 parserOptions
: { ecmaVersion
: 6 },
1154 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1157 code
: "if (foo) { var foo = function() {} } else {}",
1160 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1163 code
: "if (foo) { var foo = function*() {} } else {}",
1166 parserOptions
: { ecmaVersion
: 6 },
1167 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1170 code
: "if (true)\nfoo()\n;[1, 2, 3].bar()",
1171 output
: "if (true)\n{foo()\n;}[1, 2, 3].bar()",
1172 options
: ["multi-line"],
1173 errors
: [{ messageId
: "missingCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1176 // https://github.com/eslint/eslint/issues/12370
1178 code
: "if (foo) {\ndoSomething()\n;\n}",
1179 output
: "if (foo) \ndoSomething()\n;\n",
1180 options
: ["multi-or-nest"],
1181 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1184 code
: "if (foo) doSomething();\nelse if (bar) {\ndoSomethingElse()\n;\n}",
1185 output
: "if (foo) doSomething();\nelse if (bar) \ndoSomethingElse()\n;\n",
1186 options
: ["multi-or-nest"],
1187 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1190 code
: "if (foo) doSomething();\nelse {\ndoSomethingElse()\n;\n}",
1191 output
: "if (foo) doSomething();\nelse \ndoSomethingElse()\n;\n",
1192 options
: ["multi-or-nest"],
1193 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "else" }, type
: "IfStatement" }]
1196 code
: "for (var i = 0; foo; i++) {\ndoSomething()\n;\n}",
1197 output
: "for (var i = 0; foo; i++) \ndoSomething()\n;\n",
1198 options
: ["multi-or-nest"],
1199 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "for" }, type
: "ForStatement" }]
1202 code
: "for (var foo in bar) {\ndoSomething()\n;\n}",
1203 output
: "for (var foo in bar) \ndoSomething()\n;\n",
1204 options
: ["multi-or-nest"],
1205 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "for-in" }, type
: "ForInStatement" }]
1208 code
: "for (var foo of bar) {\ndoSomething()\n;\n}",
1209 output
: "for (var foo of bar) \ndoSomething()\n;\n",
1210 options
: ["multi-or-nest"],
1211 parserOptions
: { ecmaVersion
: 6 },
1212 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "for-of" }, type
: "ForOfStatement" }]
1215 code
: "while (foo) {\ndoSomething()\n;\n}",
1216 output
: "while (foo) \ndoSomething()\n;\n",
1217 options
: ["multi-or-nest"],
1218 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1221 code
: "do {\ndoSomething()\n;\n} while (foo)",
1222 output
: "do \ndoSomething()\n;\n while (foo)",
1223 options
: ["multi-or-nest"],
1224 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "do" }, type
: "DoWhileStatement" }]
1227 // https://github.com/eslint/eslint/issues/12928 (also in valid[])
1229 code
: "if (a) { if (b) foo(); }",
1230 output
: "if (a) if (b) foo(); ",
1232 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1235 code
: "if (a) { if (b) foo(); else bar(); }",
1236 output
: "if (a) if (b) foo(); else bar(); ",
1238 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1241 code
: "if (a) { if (b) foo(); else bar(); } baz();",
1242 output
: "if (a) if (b) foo(); else bar(); baz();",
1244 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1247 code
: "if (a) { while (cond) if (b) foo(); }",
1248 output
: "if (a) while (cond) if (b) foo(); ",
1250 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1253 code
: "if (a) while (cond) { if (b) foo(); }",
1254 output
: "if (a) while (cond) if (b) foo(); ",
1256 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1259 code
: "if (a) while (cond) { if (b) foo(); else bar(); }",
1260 output
: "if (a) while (cond) if (b) foo(); else bar(); ",
1262 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1265 code
: "if (a) { while (cond) { if (b) foo(); } bar(); baz() } else quux();",
1266 output
: "if (a) { while (cond) if (b) foo(); bar(); baz() } else quux();",
1268 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1271 code
: "if (a) { if (b) foo(); } bar();",
1272 output
: "if (a) if (b) foo(); bar();",
1274 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1277 code
: "if(a) { if (b) foo(); } if (c) bar(); else baz();",
1278 output
: "if(a) if (b) foo(); if (c) bar(); else baz();",
1279 options
: ["multi-or-nest"],
1280 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1283 code
: "if (a) { do if (b) foo(); while (cond); } else bar();",
1284 output
: "if (a) do if (b) foo(); while (cond); else bar();",
1286 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1289 code
: "if (a) do { if (b) foo(); } while (cond); else bar();",
1290 output
: "if (a) do if (b) foo(); while (cond); else bar();",
1292 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "do" }, type
: "DoWhileStatement" }]
1295 code
: "if (a) { if (b) foo(); else bar(); } else baz();",
1296 output
: "if (a) if (b) foo(); else bar(); else baz();",
1298 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1301 code
: "if (a) while (cond) { bar(); } else baz();",
1302 output
: "if (a) while (cond) bar(); else baz();",
1304 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1307 code
: "if (a) { for (;;); } else bar();",
1308 output
: "if (a) for (;;); else bar();",
1310 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1313 code
: "if (a) { while (cond) if (b) foo() } else bar();",
1314 output
: "if (a) { while (cond) if (b) foo() } else {bar();}",
1315 options
: ["multi", "consistent"],
1316 errors
: [{ messageId
: "missingCurlyAfter", data
: { name
: "else" }, type
: "IfStatement" }]
1321 * Reports 2 errors, but one pair of braces is necessary if the other pair gets removed.
1322 * Auto-fix will remove only outer braces in the first iteration.
1323 * After that, the inner braces will become valid and won't be removed in the second iteration.
1324 * If user manually removes inner braces first, the outer braces will become valid.
1326 code
: "if (a) { while (cond) { if (b) foo(); } } else bar();",
1327 output
: "if (a) while (cond) { if (b) foo(); } else bar();",
1330 { messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" },
1331 { messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }