]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-sfc): correctly remove parens used for wrapping (#3582)
authorHcySunYang <HcySunYang@outlook.com>
Fri, 28 May 2021 20:02:31 +0000 (04:02 +0800)
committerGitHub <noreply@github.com>
Fri, 28 May 2021 20:02:31 +0000 (16:02 -0400)
fix #3581

packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap
packages/compiler-sfc/__tests__/compileScript.spec.ts
packages/compiler-sfc/src/compileScript.ts

index 7397228fb3b3aa90bdf0a8773ade2c9e84b8d94b..9887d8943d2f7d7675a8fec06354205eb5b61321 100644 (file)
@@ -622,9 +622,11 @@ const c = _ref(__c);
 const d = _ref(__d);
 const f = _ref(__f);
 const g = _ref(__g);
-      console.log(n.value, a.value, c.value, d.value, f.value, g.value)
+      const { foo: __foo } = useSomthing(() => 1);
+const foo = _ref(__foo);
+      console.log(n.value, a.value, c.value, d.value, f.value, g.value, foo.value)
       
-return { n, a, c, d, f, g }
+return { n, a, c, d, f, g, foo }
 }
 
 }"
index d74d7448aa965acc0d14a9ced32154f86d046ee1..de578dd90fd6014cc41fc3768efebdc1c3203062 100644 (file)
@@ -777,11 +777,13 @@ const emit = defineEmit(['a', 'b'])
     test('object destructure', () => {
       const { content, bindings } = compile(`<script setup>
       ref: n = 1, ({ a, b: c, d = 1, e: f = 2, ...g } = useFoo())
-      console.log(n, a, c, d, f, g)
+      ref: ({ foo } = useSomthing(() => 1));
+      console.log(n, a, c, d, f, g, foo)
       </script>`)
       expect(content).toMatch(
         `const n = _ref(1), { a: __a, b: __c, d: __d = 1, e: __f = 2, ...__g } = useFoo()`
       )
+      expect(content).toMatch(`const { foo: __foo } = useSomthing(() => 1)`)
       expect(content).toMatch(`\nconst a = _ref(__a);`)
       expect(content).not.toMatch(`\nconst b = _ref(__b);`)
       expect(content).toMatch(`\nconst c = _ref(__c);`)
@@ -789,17 +791,19 @@ const emit = defineEmit(['a', 'b'])
       expect(content).not.toMatch(`\nconst e = _ref(__e);`)
       expect(content).toMatch(`\nconst f = _ref(__f);`)
       expect(content).toMatch(`\nconst g = _ref(__g);`)
+      expect(content).toMatch(`\nconst foo = _ref(__foo);`)
       expect(content).toMatch(
-        `console.log(n.value, a.value, c.value, d.value, f.value, g.value)`
+        `console.log(n.value, a.value, c.value, d.value, f.value, g.value, foo.value)`
       )
-      expect(content).toMatch(`return { n, a, c, d, f, g }`)
+      expect(content).toMatch(`return { n, a, c, d, f, g, foo }`)
       expect(bindings).toStrictEqual({
         n: BindingTypes.SETUP_REF,
         a: BindingTypes.SETUP_REF,
         c: BindingTypes.SETUP_REF,
         d: BindingTypes.SETUP_REF,
         f: BindingTypes.SETUP_REF,
-        g: BindingTypes.SETUP_REF
+        g: BindingTypes.SETUP_REF,
+        foo: BindingTypes.SETUP_REF
       })
       assertCode(content)
     })
index 10912838e5343a3535149c926afd94276530a26c..c29125e0e1ca30c5a5e949d75e2e349c932f130f 100644 (file)
@@ -352,7 +352,7 @@ export function compileScript(
             break
           }
         }
-        for (let i = left.end!; i > 0; i++) {
+        for (let i = right.end!; i > 0; i++) {
           const char = source[i + startOffset]
           if (char === ')') {
             s.remove(i + startOffset, i + startOffset + 1)