-
-
Notifications
You must be signed in to change notification settings - Fork 354
/
no-lonely-if.js
126 lines (124 loc) · 1.6 KB
/
no-lonely-if.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import {outdent} from 'outdent';
import {test} from './utils/test';
test({
valid: [
outdent`
if (a) {
if (b) {
}
} else {}
`,
outdent`
if (a) {
if (b) {
}
foo();
} else {}
`,
outdent`
if (a) {
} else {
if (y) {}
}
`,
outdent`
if (a) {
b ? c() : d()
}
`
],
invalid: []
});
test.visualize([
outdent`
if (a) {
if (b) {
}
}
`,
// Inner one is `BlockStatement`
outdent`
if (a) if (b) {
foo();
}
`,
// Outer one is `BlockStatement`
outdent`
if (a) {
if (b) foo();
}
`,
// No `BlockStatement`
'if (a) if (b) foo();',
// `EmptyStatement`
'if (a) if (b);',
// Nested
outdent`
if (a) {
if (b) {
// Should not report
}
} else if (c) {
if (d) {
}
}
`,
// Need parenthesis
outdent`
function * foo() {
if (a || b)
if (a ?? b)
if (a ? b : c)
if (a = b)
if (a += b)
if (a -= b)
if (a &&= b)
if (yield a)
if (a, b);
}
`,
// Should not add parenthesis
outdent`
async function foo() {
if (a)
if (await a)
if (a.b)
if (a && b);
}
`,
// Don't case parenthesis in outer test
'if (((a || b))) if (((c || d)));',
// Comments
outdent`
if /* will keep */
(
/* will keep */
a /* will keep */
.b /* will keep */
) /* keep */{
/* will remove */
if (
/* will remove */
c /* will keep */
.d /* will remove */
) {
/* will keep */
foo();
/* will keep */
}
/* will remove */
}
`,
// Semicolon
outdent`
if (a) {
if (b) foo()
}
[].forEach(bar)
`,
outdent`
if (a)
if (b) foo()
;[].forEach(bar)
`
]);