]>
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" },
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
: "while (foo) { bar() }",
540 output
: "while (foo) bar() ",
544 messageId
: "unexpectedCurlyAfterCondition",
545 data
: { name
: "while" },
546 type
: "WhileStatement"
551 code
: "if (foo) baz(); else { bar() }",
552 output
: "if (foo) baz(); else bar() ",
556 messageId
: "unexpectedCurlyAfter",
557 data
: { name
: "else" },
563 code
: "if (true) { if (false) console.log(1) }",
564 output
: "if (true) if (false) console.log(1) ",
568 messageId
: "unexpectedCurlyAfterCondition",
569 data
: { name
: "if" },
575 code
: "if (a) { if (b) console.log(1); else console.log(2) } else console.log(3)",
580 messageId
: "unexpectedCurlyAfterCondition",
581 data
: { name
: "if" },
616 messageId
: "unexpectedCurlyAfter",
617 data
: { name
: "else" },
625 code
: "for (var foo in bar) { console.log(foo) }",
626 output
: "for (var foo in bar) console.log(foo) ",
630 messageId
: "unexpectedCurlyAfter",
631 data
: { name
: "for-in" },
632 type
: "ForInStatement"
637 code
: "for (var foo of bar) { console.log(foo) }",
638 output
: "for (var foo of bar) console.log(foo) ",
640 parserOptions
: { ecmaVersion
: 6 },
643 messageId
: "unexpectedCurlyAfter",
644 data
: { name
: "for-of" },
645 type
: "ForOfStatement"
650 code
: "if (foo) \n baz()",
651 output
: "if (foo) \n {baz()}",
652 options
: ["multi-line"],
655 messageId
: "missingCurlyAfterCondition",
656 data
: { name
: "if" },
662 code
: "while (foo) \n baz()",
663 output
: "while (foo) \n {baz()}",
664 options
: ["multi-line"],
667 messageId
: "missingCurlyAfterCondition",
668 data
: { name
: "while" },
669 type
: "WhileStatement"
674 code
: "for (;foo;) \n bar()",
675 output
: "for (;foo;) \n {bar()}",
676 options
: ["multi-line"],
679 messageId
: "missingCurlyAfterCondition",
680 data
: { name
: "for" },
686 code
: "while (bar && \n baz) \n foo()",
687 output
: "while (bar && \n baz) \n {foo()}",
688 options
: ["multi-line"],
691 messageId
: "missingCurlyAfterCondition",
692 data
: { name
: "while" },
693 type
: "WhileStatement"
698 code
: "if (foo) bar(baz, \n baz)",
699 output
: "if (foo) {bar(baz, \n baz)}",
700 options
: ["multi-line"],
703 messageId
: "missingCurlyAfterCondition",
704 data
: { name
: "if" },
710 code
: "do \n foo(); \n while (bar)",
711 output
: "do \n {foo();} \n while (bar)",
712 options
: ["multi-line"],
715 messageId
: "missingCurlyAfter",
716 data
: { name
: "do" },
717 type
: "DoWhileStatement"
722 code
: "for (var foo in bar) \n console.log(foo)",
723 output
: "for (var foo in bar) \n {console.log(foo)}",
724 options
: ["multi-line"],
727 messageId
: "missingCurlyAfter",
728 data
: { name
: "for-in" },
729 type
: "ForInStatement"
734 code
: "for (var foo in bar) \n console.log(1); \n console.log(2)",
735 output
: "for (var foo in bar) \n {console.log(1);} \n console.log(2)",
736 options
: ["multi-line"],
739 messageId
: "missingCurlyAfter",
740 data
: { name
: "for-in" },
741 type
: "ForInStatement"
746 code
: "for (var foo of bar) \n console.log(foo)",
747 output
: "for (var foo of bar) \n {console.log(foo)}",
748 options
: ["multi-line"],
749 parserOptions
: { ecmaVersion
: 6 },
752 messageId
: "missingCurlyAfter",
753 data
: { name
: "for-of" },
754 type
: "ForOfStatement"
759 code
: "for (var foo of bar) \n console.log(1); \n console.log(2)",
760 output
: "for (var foo of bar) \n {console.log(1);} \n console.log(2)",
761 options
: ["multi-line"],
762 parserOptions
: { ecmaVersion
: 6 },
765 messageId
: "missingCurlyAfter",
766 data
: { name
: "for-of" },
767 type
: "ForOfStatement"
772 code
: "if (foo) \n quz = { \n bar: baz, \n qux: foo \n };",
773 output
: "if (foo) \n {quz = { \n bar: baz, \n qux: foo \n };}",
774 options
: ["multi-or-nest"],
777 messageId
: "missingCurlyAfterCondition",
778 data
: { name
: "if" },
784 code
: "while (true) \n if (foo) \n doSomething(); \n else \n doSomethingElse(); \n",
785 output
: "while (true) \n {if (foo) \n doSomething(); \n else \n doSomethingElse();} \n",
786 options
: ["multi-or-nest"],
789 messageId
: "missingCurlyAfterCondition",
790 data
: { name
: "while" },
791 type
: "WhileStatement"
796 code
: "if (foo) { \n quz = true; \n }",
797 output
: "if (foo) \n quz = true; \n ",
798 options
: ["multi-or-nest"],
801 messageId
: "unexpectedCurlyAfterCondition",
802 data
: { name
: "if" },
808 code
: "if (foo) { var bar = 'baz'; }",
809 output
: "if (foo) var bar = 'baz'; ",
813 messageId
: "unexpectedCurlyAfterCondition",
814 data
: { name
: "if" },
820 code
: "if (foo) { let bar; } else baz();",
821 output
: "if (foo) { let bar; } else {baz();}",
822 options
: ["multi", "consistent"],
823 parserOptions
: { ecmaVersion
: 6 },
826 messageId
: "missingCurlyAfter",
827 data
: { name
: "else" },
833 code
: "if (foo) bar(); else { const baz = 'quux' }",
834 output
: "if (foo) {bar();} else { const baz = 'quux' }",
835 options
: ["multi", "consistent"],
836 parserOptions
: { ecmaVersion
: 6 },
839 messageId
: "missingCurlyAfterCondition",
840 data
: { name
: "if" },
846 code
: "if (foo) { \n var bar = 'baz'; \n }",
847 output
: "if (foo) \n var bar = 'baz'; \n ",
848 options
: ["multi-or-nest"],
851 messageId
: "unexpectedCurlyAfterCondition",
852 data
: { name
: "if" },
858 code
: "while (true) { \n doSomething(); \n }",
859 output
: "while (true) \n doSomething(); \n ",
860 options
: ["multi-or-nest"],
863 messageId
: "unexpectedCurlyAfterCondition",
864 data
: { name
: "while" },
865 type
: "WhileStatement"
870 code
: "for (var i = 0; foo; i++) { \n doSomething(); \n }",
871 output
: "for (var i = 0; foo; i++) \n doSomething(); \n ",
872 options
: ["multi-or-nest"],
875 messageId
: "unexpectedCurlyAfterCondition",
876 data
: { name
: "for" },
882 code
: "for (var foo in bar) \n if (foo) console.log(1); \n else console.log(2);",
883 output
: "for (var foo in bar) \n {if (foo) console.log(1); \n else console.log(2);}",
884 options
: ["multi-or-nest"],
887 messageId
: "missingCurlyAfter",
888 data
: { name
: "for-in" },
889 type
: "ForInStatement"
894 code
: "for (var foo in bar) { if (foo) console.log(1) }",
895 output
: "for (var foo in bar) if (foo) console.log(1) ",
896 options
: ["multi-or-nest"],
899 messageId
: "unexpectedCurlyAfter",
900 data
: { name
: "for-in" },
901 type
: "ForInStatement"
906 code
: "for (var foo of bar) \n if (foo) console.log(1); \n else console.log(2);",
907 output
: "for (var foo of bar) \n {if (foo) console.log(1); \n else console.log(2);}",
908 options
: ["multi-or-nest"],
909 parserOptions
: { ecmaVersion
: 6 },
912 messageId
: "missingCurlyAfter",
913 data
: { name
: "for-of" },
914 type
: "ForOfStatement"
919 code
: "for (var foo of bar) { if (foo) console.log(1) }",
920 output
: "for (var foo of bar) if (foo) console.log(1) ",
921 options
: ["multi-or-nest"],
922 parserOptions
: { ecmaVersion
: 6 },
925 messageId
: "unexpectedCurlyAfter",
926 data
: { name
: "for-of" },
927 type
: "ForOfStatement"
932 code
: "if (true) foo(); \n else { \n bar(); \n baz(); \n }",
933 output
: "if (true) {foo();} \n else { \n bar(); \n baz(); \n }",
934 options
: ["multi", "consistent"],
937 messageId
: "missingCurlyAfterCondition",
938 data
: { name
: "if" },
944 code
: "if (true) { foo(); faa(); }\n else bar();",
945 output
: "if (true) { foo(); faa(); }\n else {bar();}",
946 options
: ["multi", "consistent"],
949 messageId
: "missingCurlyAfter",
950 data
: { name
: "else" },
956 code
: "if (true) foo(); else { baz(); }",
957 output
: "if (true) foo(); else baz(); ",
958 options
: ["multi", "consistent"],
961 messageId
: "unexpectedCurlyAfter",
962 data
: { name
: "else" },
968 code
: "if (true) foo(); else if (true) faa(); else { bar(); baz(); }",
969 output
: "if (true) {foo();} else if (true) {faa();} else { bar(); baz(); }",
970 options
: ["multi", "consistent"],
973 messageId
: "missingCurlyAfterCondition",
974 data
: { name
: "if" },
978 messageId
: "missingCurlyAfterCondition",
979 data
: { name
: "if" },
985 code
: "do{foo();} while (bar)",
986 output
: "do foo(); while (bar)",
990 messageId
: "unexpectedCurlyAfter",
991 data
: { name
: "do" },
992 type
: "DoWhileStatement"
997 code
: "do{[1, 2, 3].map(bar);} while (bar)",
998 output
: "do[1, 2, 3].map(bar); while (bar)",
1002 messageId
: "unexpectedCurlyAfter",
1003 data
: { name
: "do" },
1004 type
: "DoWhileStatement"
1009 code
: "if (foo) {bar()} baz()",
1014 messageId
: "unexpectedCurlyAfterCondition",
1015 data
: { name
: "if" },
1021 code
: "do {foo();} while (bar)",
1022 output
: "do foo(); while (bar)",
1026 messageId
: "unexpectedCurlyAfter",
1027 data
: { name
: "do" },
1028 type
: "DoWhileStatement"
1033 // Don't remove curly braces if it would cause issues due to ASI.
1035 code
: "if (foo) { bar }\n++baz;",
1038 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1041 code
: "if (foo) { bar; }\n++baz;",
1042 output
: "if (foo) bar; \n++baz;",
1044 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1047 code
: "if (foo) { bar++ }\nbaz;",
1050 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1053 code
: "if (foo) { bar }\n[1, 2, 3].map(foo);",
1056 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1059 code
: "if (foo) { bar }\n(1).toString();",
1062 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1065 code
: "if (foo) { bar }\n/regex/.test('foo');",
1068 parserOptions
: { ecmaVersion
: 6 },
1069 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1072 code
: "if (foo) { bar }\nBaz();",
1073 output
: "if (foo) bar \nBaz();",
1075 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1093 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1096 code
: "if (foo) { while (bar) {} } else {}",
1097 output
: "if (foo) while (bar) {} else {}",
1099 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1102 code
: "if (foo) { var foo = () => {} } else {}",
1105 parserOptions
: { ecmaVersion
: 6 },
1106 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1109 code
: "if (foo) { var foo = function() {} } else {}",
1112 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1115 code
: "if (foo) { var foo = function*() {} } else {}",
1118 parserOptions
: { ecmaVersion
: 6 },
1119 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1122 code
: "if (true)\nfoo()\n;[1, 2, 3].bar()",
1123 output
: "if (true)\n{foo()\n;}[1, 2, 3].bar()",
1124 options
: ["multi-line"],
1125 errors
: [{ messageId
: "missingCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1128 // https://github.com/eslint/eslint/issues/12370
1130 code
: "if (foo) {\ndoSomething()\n;\n}",
1131 output
: "if (foo) \ndoSomething()\n;\n",
1132 options
: ["multi-or-nest"],
1133 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1136 code
: "if (foo) doSomething();\nelse if (bar) {\ndoSomethingElse()\n;\n}",
1137 output
: "if (foo) doSomething();\nelse if (bar) \ndoSomethingElse()\n;\n",
1138 options
: ["multi-or-nest"],
1139 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1142 code
: "if (foo) doSomething();\nelse {\ndoSomethingElse()\n;\n}",
1143 output
: "if (foo) doSomething();\nelse \ndoSomethingElse()\n;\n",
1144 options
: ["multi-or-nest"],
1145 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "else" }, type
: "IfStatement" }]
1148 code
: "for (var i = 0; foo; i++) {\ndoSomething()\n;\n}",
1149 output
: "for (var i = 0; foo; i++) \ndoSomething()\n;\n",
1150 options
: ["multi-or-nest"],
1151 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "for" }, type
: "ForStatement" }]
1154 code
: "for (var foo in bar) {\ndoSomething()\n;\n}",
1155 output
: "for (var foo in bar) \ndoSomething()\n;\n",
1156 options
: ["multi-or-nest"],
1157 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "for-in" }, type
: "ForInStatement" }]
1160 code
: "for (var foo of bar) {\ndoSomething()\n;\n}",
1161 output
: "for (var foo of bar) \ndoSomething()\n;\n",
1162 options
: ["multi-or-nest"],
1163 parserOptions
: { ecmaVersion
: 6 },
1164 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "for-of" }, type
: "ForOfStatement" }]
1167 code
: "while (foo) {\ndoSomething()\n;\n}",
1168 output
: "while (foo) \ndoSomething()\n;\n",
1169 options
: ["multi-or-nest"],
1170 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1173 code
: "do {\ndoSomething()\n;\n} while (foo)",
1174 output
: "do \ndoSomething()\n;\n while (foo)",
1175 options
: ["multi-or-nest"],
1176 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "do" }, type
: "DoWhileStatement" }]
1179 // https://github.com/eslint/eslint/issues/12928 (also in valid[])
1181 code
: "if (a) { if (b) foo(); }",
1182 output
: "if (a) if (b) foo(); ",
1184 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1187 code
: "if (a) { if (b) foo(); else bar(); }",
1188 output
: "if (a) if (b) foo(); else bar(); ",
1190 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1193 code
: "if (a) { if (b) foo(); else bar(); } baz();",
1194 output
: "if (a) if (b) foo(); else bar(); baz();",
1196 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1199 code
: "if (a) { while (cond) if (b) foo(); }",
1200 output
: "if (a) while (cond) if (b) foo(); ",
1202 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1205 code
: "if (a) while (cond) { if (b) foo(); }",
1206 output
: "if (a) while (cond) if (b) foo(); ",
1208 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1211 code
: "if (a) while (cond) { if (b) foo(); else bar(); }",
1212 output
: "if (a) while (cond) if (b) foo(); else bar(); ",
1214 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1217 code
: "if (a) { while (cond) { if (b) foo(); } bar(); baz() } else quux();",
1218 output
: "if (a) { while (cond) if (b) foo(); bar(); baz() } else quux();",
1220 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1223 code
: "if (a) { if (b) foo(); } bar();",
1224 output
: "if (a) if (b) foo(); bar();",
1226 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1229 code
: "if(a) { if (b) foo(); } if (c) bar(); else baz();",
1230 output
: "if(a) if (b) foo(); if (c) bar(); else baz();",
1231 options
: ["multi-or-nest"],
1232 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1235 code
: "if (a) { do if (b) foo(); while (cond); } else bar();",
1236 output
: "if (a) do if (b) foo(); while (cond); else bar();",
1238 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1241 code
: "if (a) do { if (b) foo(); } while (cond); else bar();",
1242 output
: "if (a) do if (b) foo(); while (cond); else bar();",
1244 errors
: [{ messageId
: "unexpectedCurlyAfter", data
: { name
: "do" }, type
: "DoWhileStatement" }]
1247 code
: "if (a) { if (b) foo(); else bar(); } else baz();",
1248 output
: "if (a) if (b) foo(); else bar(); else baz();",
1250 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1253 code
: "if (a) while (cond) { bar(); } else baz();",
1254 output
: "if (a) while (cond) bar(); else baz();",
1256 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }]
1259 code
: "if (a) { for (;;); } else bar();",
1260 output
: "if (a) for (;;); else bar();",
1262 errors
: [{ messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" }]
1265 code
: "if (a) { while (cond) if (b) foo() } else bar();",
1266 output
: "if (a) { while (cond) if (b) foo() } else {bar();}",
1267 options
: ["multi", "consistent"],
1268 errors
: [{ messageId
: "missingCurlyAfter", data
: { name
: "else" }, type
: "IfStatement" }]
1273 * Reports 2 errors, but one pair of braces is necessary if the other pair gets removed.
1274 * Auto-fix will remove only outer braces in the first iteration.
1275 * After that, the inner braces will become valid and won't be removed in the second iteration.
1276 * If user manually removes inner braces first, the outer braces will become valid.
1278 code
: "if (a) { while (cond) { if (b) foo(); } } else bar();",
1279 output
: "if (a) while (cond) { if (b) foo(); } else bar();",
1282 { messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "if" }, type
: "IfStatement" },
1283 { messageId
: "unexpectedCurlyAfterCondition", data
: { name
: "while" }, type
: "WhileStatement" }