fix(compiler-core): fix multiline member expression check (#2436)

fix #2426
This commit is contained in:
Hunter 2020-10-20 21:31:08 +08:00 committed by GitHub
parent 288c764e52
commit 6d2a1cb64d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 6 deletions

View File

@ -35,10 +35,14 @@ return function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"input\\", {
modelValue:
model
model
.
foo
,
\\"onUpdate:modelValue\\": $event => (
model
model
.
foo
= $event)
}, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]))
}

View File

@ -115,8 +115,9 @@ describe('compiler: transform v-model', () => {
expect(generate(root, { mode: 'module' }).code).toMatchSnapshot()
})
// #2426
test('simple expression (with multilines)', () => {
const root = parseWithVModel('<input v-model="\n model \n" />')
const root = parseWithVModel('<input v-model="\n model\n.\nfoo \n" />')
const node = root.children[0] as ElementNode
const props = ((node.codegenNode as VNodeCall).props as ObjectExpression)
.properties
@ -127,7 +128,7 @@ describe('compiler: transform v-model', () => {
isStatic: true
},
value: {
content: '\n model \n',
content: '\n model\n.\nfoo \n',
isStatic: false
}
})
@ -141,7 +142,7 @@ describe('compiler: transform v-model', () => {
children: [
'$event => (',
{
content: '\n model \n',
content: '\n model\n.\nfoo \n',
isStatic: false
},
' = $event)'

View File

@ -56,7 +56,7 @@ const nonIdentifierRE = /^\d|[^\$\w]/
export const isSimpleIdentifier = (name: string): boolean =>
!nonIdentifierRE.test(name)
const memberExpRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[[^\]]+\])*$/
const memberExpRE = /^[A-Za-z_$][\w$]*(?:\s*\.\s*[A-Za-z_$][\w$]*|\[[^\]]+\])*$/
export const isMemberExpression = (path: string): boolean => {
if (!path) return false
return memberExpRE.test(path.trim())