]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(reactivity-transform): should not rewrite catch param (#5711)
authoredison <daiwei521@126.com>
Thu, 14 Apr 2022 00:06:58 +0000 (08:06 +0800)
committerGitHub <noreply@github.com>
Thu, 14 Apr 2022 00:06:58 +0000 (20:06 -0400)
fix #5709

packages/reactivity-transform/__tests__/__snapshots__/reactivityTransform.spec.ts.snap
packages/reactivity-transform/__tests__/reactivityTransform.spec.ts
packages/reactivity-transform/src/reactivityTransform.ts

index 73b5db93ee69900f5808ff6c5049e2a4a9dff2cc..99be242135d0c05cf4a0e4207014a807c3ae7bec 100644 (file)
@@ -216,6 +216,11 @@ exports[`should not rewrite scope variable 1`] = `
         console.log(d.value)
         console.log(e)
       }
+      let err = _ref(null)
+      try {
+      } catch (err) {
+        console.log(err)
+      }
     "
 `;
 
index 9f24d2663e55bfafebec2ff624720ef909d9b5f5..ece6e3512f91f508a77d10f43bbe62cc0c40c2e9 100644 (file)
@@ -222,12 +222,18 @@ test('should not rewrite scope variable', () => {
         console.log(d)
         console.log(e)
       }
+      let err = $ref(null)
+      try {
+      } catch (err) {
+        console.log(err)
+      }
     `)
   expect(code).toMatch('console.log(a)')
   expect(code).toMatch('console.log(b.value)')
   expect(code).toMatch('console.log(c)')
   expect(code).toMatch('console.log(d.value)')
   expect(code).toMatch('console.log(e)')
+  expect(code).toMatch('console.log(err)')
   assertCode(code)
 })
 
index a67d843280d65ad4639a95cbee2a987bc36656b8..809e3e4e246b2b6205f90de8199bb8c8dbf1ca3c 100644 (file)
@@ -566,6 +566,16 @@ export function transformAST(
         return
       }
 
+      // catch param
+      if (node.type === 'CatchClause') {
+        scopeStack.push((currentScope = {}))
+        if (node.param && node.param.type === 'Identifier') {
+          registerBinding(node.param)
+        }
+        walkScope(node.body)
+        return
+      }
+
       // non-function block scopes
       if (node.type === 'BlockStatement' && !isFunctionType(parent!)) {
         scopeStack.push((currentScope = {}))