]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(v-on): properly detect member expressions with optional chaining
authorEvan You <yyx990803@gmail.com>
Thu, 15 Jul 2021 16:23:07 +0000 (12:23 -0400)
committerEvan You <yyx990803@gmail.com>
Thu, 15 Jul 2021 16:23:07 +0000 (12:23 -0400)
fix #4107

packages/compiler-core/__tests__/utils.spec.ts
packages/compiler-core/src/utils.ts

index f866276b2917b5a8213c89f1cdca44d4dd635dcc..d68c3f694d7ae62a7b966fcb705f5ad01f88bed7 100644 (file)
@@ -85,6 +85,7 @@ test('isMemberExpression', () => {
   expect(isMemberExpression('obj[1][2]')).toBe(true)
   expect(isMemberExpression('obj[1][2].foo[3].bar.baz')).toBe(true)
   expect(isMemberExpression(`a[b[c.d]][0]`)).toBe(true)
+  expect(isMemberExpression('obj?.foo')).toBe(true)
 
   // strings
   expect(isMemberExpression(`a['foo' + bar[baz]["qux"]]`)).toBe(true)
@@ -102,4 +103,5 @@ test('isMemberExpression', () => {
   expect(isMemberExpression('123[a]')).toBe(false)
   expect(isMemberExpression('a + b')).toBe(false)
   expect(isMemberExpression('foo()')).toBe(false)
+  expect(isMemberExpression('a?b:c')).toBe(false)
 })
index de2299a37e8a127aeb8df774bee50f5554a8fbf6..74c9ee907e1c4e002c50366de0f0b7bf554d2492 100644 (file)
@@ -63,7 +63,7 @@ const enum MemberExpLexState {
 }
 
 const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/
-const validIdentCharRE = /[\.\w$\xA0-\uFFFF]/
+const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/
 const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g
 
 /**