Skip to content

Commit f6fccad

Browse files
authored
Remove unnecessary parentheses around assignment in v-on (#16887)
1 parent 5fef089 commit f6fccad

File tree

4 files changed

+137
-0
lines changed

4 files changed

+137
-0
lines changed

changelog_unreleased/vue/16887.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#### Remove unnecessary parentheses around assignment in `v-on` (#16887 by @fisker)
2+
3+
<!-- prettier-ignore -->
4+
```vue
5+
<!-- Input -->
6+
<template>
7+
<button @click="foo += 2">Click</button>
8+
</template>
9+
10+
<!-- Prettier stable -->
11+
<template>
12+
<button @click="(foo += 2)">Click</button>
13+
</template>
14+
15+
<!-- Prettier main -->
16+
<template>
17+
<button @click="foo += 2">Click</button>
18+
</template>
19+
```

src/language-js/needs-parens.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,10 @@ function needsParens(path, options) {
808808
return false;
809809
}
810810

811+
if (key === "node" && parent.type === "JsExpressionRoot") {
812+
return false;
813+
}
814+
811815
return true;
812816
}
813817
case "ConditionalExpression":

tests/format/vue/event-binding/__snapshots__/format.test.js.snap

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,85 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3+
exports[`assignment.vue format 1`] = `
4+
====================================options=====================================
5+
parsers: ["vue"]
6+
printWidth: 80
7+
| printWidth
8+
=====================================input======================================
9+
<template>
10+
<div>
11+
<button @click=" foo = 1 "></button>
12+
<button @click=" foo = 1; "></button>
13+
<button @click=" foo += 1 "></button>
14+
<button @click=" foo += 1; "></button>
15+
<button @click=" foo -= 1 "></button>
16+
<button @click=" foo -= 1; "></button>
17+
<button @click=" foo *= 1 "></button>
18+
<button @click=" foo *= 1; "></button>
19+
<button @click=" foo /= 1 "></button>
20+
<button @click=" foo /= 1; "></button>
21+
<button @click=" foo %= 1 "></button>
22+
<button @click=" foo %= 1; "></button>
23+
<button @click=" foo <<= 1 "></button>
24+
<button @click=" foo <<= 1; "></button>
25+
<button @click=" foo >>= 1 "></button>
26+
<button @click=" foo >>= 1; "></button>
27+
<button @click=" foo >>>= 1 "></button>
28+
<button @click=" foo >>>= 1; "></button>
29+
<button @click=" foo |= 1 "></button>
30+
<button @click=" foo |= 1; "></button>
31+
<button @click=" foo ^= 1 "></button>
32+
<button @click=" foo ^= 1; "></button>
33+
<button @click=" foo &= 1 "></button>
34+
<button @click=" foo &= 1; "></button>
35+
<button @click=" foo ||= 1 "></button>
36+
<button @click=" foo ||= 1; "></button>
37+
<button @click=" foo &&= 1 "></button>
38+
<button @click=" foo &&= 1; "></button>
39+
<button @click=" foo ??= 1 "></button>
40+
<button @click=" foo ??= 1; "></button>
41+
</div>
42+
</template>
43+
44+
=====================================output=====================================
45+
<template>
46+
<div>
47+
<button @click="foo = 1"></button>
48+
<button @click="foo = 1"></button>
49+
<button @click="foo += 1"></button>
50+
<button @click="foo += 1"></button>
51+
<button @click="foo -= 1"></button>
52+
<button @click="foo -= 1"></button>
53+
<button @click="foo *= 1"></button>
54+
<button @click="foo *= 1"></button>
55+
<button @click="foo /= 1"></button>
56+
<button @click="foo /= 1"></button>
57+
<button @click="foo %= 1"></button>
58+
<button @click="foo %= 1"></button>
59+
<button @click="foo <<= 1"></button>
60+
<button @click="foo <<= 1"></button>
61+
<button @click="foo >>= 1"></button>
62+
<button @click="foo >>= 1"></button>
63+
<button @click="foo >>>= 1"></button>
64+
<button @click="foo >>>= 1"></button>
65+
<button @click="foo |= 1"></button>
66+
<button @click="foo |= 1"></button>
67+
<button @click="foo ^= 1"></button>
68+
<button @click="foo ^= 1"></button>
69+
<button @click="foo &= 1"></button>
70+
<button @click="foo &= 1"></button>
71+
<button @click="foo ||= 1"></button>
72+
<button @click="foo ||= 1"></button>
73+
<button @click="foo &&= 1"></button>
74+
<button @click="foo &&= 1"></button>
75+
<button @click="foo ??= 1"></button>
76+
<button @click="foo ??= 1"></button>
77+
</div>
78+
</template>
79+
80+
================================================================================
81+
`;
82+
383
exports[`basic-ts.vue format 1`] = `
484
====================================options=====================================
585
parsers: ["vue"]
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<template>
2+
<div>
3+
<button @click=" foo = 1 "></button>
4+
<button @click=" foo = 1; "></button>
5+
<button @click=" foo += 1 "></button>
6+
<button @click=" foo += 1; "></button>
7+
<button @click=" foo -= 1 "></button>
8+
<button @click=" foo -= 1; "></button>
9+
<button @click=" foo *= 1 "></button>
10+
<button @click=" foo *= 1; "></button>
11+
<button @click=" foo /= 1 "></button>
12+
<button @click=" foo /= 1; "></button>
13+
<button @click=" foo %= 1 "></button>
14+
<button @click=" foo %= 1; "></button>
15+
<button @click=" foo <<= 1 "></button>
16+
<button @click=" foo <<= 1; "></button>
17+
<button @click=" foo >>= 1 "></button>
18+
<button @click=" foo >>= 1; "></button>
19+
<button @click=" foo >>>= 1 "></button>
20+
<button @click=" foo >>>= 1; "></button>
21+
<button @click=" foo |= 1 "></button>
22+
<button @click=" foo |= 1; "></button>
23+
<button @click=" foo ^= 1 "></button>
24+
<button @click=" foo ^= 1; "></button>
25+
<button @click=" foo &= 1 "></button>
26+
<button @click=" foo &= 1; "></button>
27+
<button @click=" foo ||= 1 "></button>
28+
<button @click=" foo ||= 1; "></button>
29+
<button @click=" foo &&= 1 "></button>
30+
<button @click=" foo &&= 1; "></button>
31+
<button @click=" foo ??= 1 "></button>
32+
<button @click=" foo ??= 1; "></button>
33+
</div>
34+
</template>

0 commit comments

Comments
 (0)