Skip to content

Commit

Permalink
fix(compiler-core): fix multiline member expression check (#2436)
Browse files Browse the repository at this point in the history
fix #2426
  • Loading branch information
69hunter authored Oct 20, 2020
1 parent 288c764 commit 6d2a1cb
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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\\"]))
}
Expand Down
7 changes: 4 additions & 3 deletions packages/compiler-core/__tests__/transforms/vModel.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -127,7 +128,7 @@ describe('compiler: transform v-model', () => {
isStatic: true
},
value: {
content: '\n model \n',
content: '\n model\n.\nfoo \n',
isStatic: false
}
})
Expand All @@ -141,7 +142,7 @@ describe('compiler: transform v-model', () => {
children: [
'$event => (',
{
content: '\n model \n',
content: '\n model\n.\nfoo \n',
isStatic: false
},
' = $event)'
Expand Down
2 changes: 1 addition & 1 deletion packages/compiler-core/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down

0 comments on commit 6d2a1cb

Please sign in to comment.