fix(vue): do not add invalid semicolon for event attr (#5418)

master
Ika 2018-11-11 00:25:11 +08:00 committed by GitHub
parent 2bb95d8924
commit 1ce76290c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 1 deletions

View File

@ -910,7 +910,9 @@ function printEmbeddedAttributeValue(node, originalTextToDoc, options) {
const fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/; const fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/;
const simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; const simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
const value = getValue(); const value = getValue()
// https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/helpers.js#L104
.trim();
return printMaybeHug( return printMaybeHug(
simplePathRE.test(value) || fnExpRE.test(value) simplePathRE.test(value) || fnExpRE.test(value)
? textToDoc(value, { parser: "__js_expression" }) ? textToDoc(value, { parser: "__js_expression" })

View File

@ -25,6 +25,12 @@ exports[`attributes.vue - vue-verify 1`] = `
:class="(() => { return 'hello' })()" :class="(() => { return 'hello' })()"
:key="index /* hello */ " :key="index /* hello */ "
:key="index // hello " :key="index // hello "
@click="() => {console.log(test)}"
@click="
() => {
console.log(test);
}
"
></div> ></div>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<div <div
@ -71,6 +77,16 @@ exports[`attributes.vue - vue-verify 1`] = `
:key=" :key="
index // hello index // hello
" "
@click="
() => {
console.log(test);
}
"
@click="
() => {
console.log(test);
}
"
></div> ></div>
`; `;
@ -100,6 +116,12 @@ exports[`attributes.vue - vue-verify 2`] = `
:class="(() => { return 'hello' })()" :class="(() => { return 'hello' })()"
:key="index /* hello */ " :key="index /* hello */ "
:key="index // hello " :key="index // hello "
@click="() => {console.log(test)}"
@click="
() => {
console.log(test);
}
"
></div> ></div>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<div <div
@ -146,6 +168,16 @@ exports[`attributes.vue - vue-verify 2`] = `
:key=" :key="
index // hello index // hello
" "
@click="
() => {
console.log(test);
}
"
@click="
() => {
console.log(test);
}
"
></div> ></div>
`; `;

View File

@ -22,4 +22,10 @@
:class="(() => { return 'hello' })()" :class="(() => { return 'hello' })()"
:key="index /* hello */ " :key="index /* hello */ "
:key="index // hello " :key="index // hello "
@click="() => {console.log(test)}"
@click="
() => {
console.log(test);
}
"
></div> ></div>