]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-core): more robust member expression check in Node
authorEvan You <yyx990803@gmail.com>
Wed, 22 Sep 2021 21:16:21 +0000 (17:16 -0400)
committerEvan You <yyx990803@gmail.com>
Wed, 22 Sep 2021 21:16:21 +0000 (17:16 -0400)
packages/compiler-core/__tests__/utils.spec.ts
packages/compiler-core/src/utils.ts

index 48f1ea5b9ae6eaf799f1abc0d0d5aa92e906e047..3c5412796e3663eb75c65f8904b80d77923ff244 100644 (file)
@@ -105,7 +105,6 @@ describe('isMemberExpression', () => {
     expect(fn('objfoo]')).toBe(false)
     expect(fn('obj[arr[0]')).toBe(false)
     expect(fn('obj[arr0]]')).toBe(false)
-    expect(fn('123[a]')).toBe(false)
     expect(fn('a + b')).toBe(false)
     expect(fn('foo()')).toBe(false)
     expect(fn('a?b:c')).toBe(false)
@@ -114,6 +113,7 @@ describe('isMemberExpression', () => {
 
   test('browser', () => {
     commonAssertions(isMemberExpressionBrowser)
+    expect(isMemberExpressionBrowser('123[a]')).toBe(false)
   })
 
   test('node', () => {
@@ -126,6 +126,8 @@ describe('isMemberExpression', () => {
     expect(fn(`foo.bar as string`)).toBe(true)
     expect(fn(`foo['bar'] as string`)).toBe(true)
     expect(fn(`foo[bar as string]`)).toBe(true)
+    expect(fn(`(foo as string)`)).toBe(true)
+    expect(fn(`123[a]`)).toBe(true)
     expect(fn(`foo() as string`)).toBe(false)
     expect(fn(`a + b as string`)).toBe(false)
   })
index ee7e6bb132dad2a638cc5e722c6b5aaaf84c9693..ff903770229cd82aed38111d3ca90939d95da4dd 100644 (file)
@@ -165,10 +165,6 @@ export const isMemberExpressionNode = (
   path: string,
   context: TransformContext
 ): boolean => {
-  path = path.trim()
-  if (!validFirstIdentCharRE.test(path[0])) {
-    return false
-  }
   try {
     let ret: Expression = parseExpression(path, {
       plugins: [...context.expressionPlugins, ...babelParserDefaultPlugins]