From 4b22e87b102d97d45d112a0931dba1aef7eea049 Mon Sep 17 00:00:00 2001 From: XmiliaH Date: Wed, 12 Apr 2023 10:25:46 +0200 Subject: [PATCH] Ensure every catch block is protected --- lib/transformer.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/transformer.js b/lib/transformer.js index 9919453..47c5ac9 100644 --- a/lib/transformer.js +++ b/lib/transformer.js @@ -113,12 +113,23 @@ function transformer(args, body, isAsync, isGenerator, filename) { if (nodeType === 'CatchClause') { const param = node.param; if (param) { - if (param.type === 'ObjectPattern') { + if (param.type === 'Identifier') { + const name = assertType(param, 'Identifier').name; + const cBody = assertType(node.body, 'BlockStatement'); + if (cBody.body.length > 0) { + insertions.push({ + __proto__: null, + pos: cBody.body[0].start, + order: TO_LEFT, + coder: () => `${name}=${INTERNAL_STATE_NAME}.handleException(${name});` + }); + } + } else { insertions.push({ __proto__: null, pos: node.start, order: TO_RIGHT, - coder: () => `catch(${tmpname}){try{throw(${tmpname}=${INTERNAL_STATE_NAME}.handleException(${tmpname}));}` + coder: () => `catch(${tmpname}){${tmpname}=${INTERNAL_STATE_NAME}.handleException(${tmpname});try{throw ${tmpname};}` }); insertions.push({ __proto__: null, @@ -126,17 +137,6 @@ function transformer(args, body, isAsync, isGenerator, filename) { order: TO_LEFT, coder: () => `}` }); - } else { - const name = assertType(param, 'Identifier').name; - const cBody = assertType(node.body, 'BlockStatement'); - if (cBody.body.length > 0) { - insertions.push({ - __proto__: null, - pos: cBody.body[0].start, - order: TO_LEFT, - coder: () => `${name}=${INTERNAL_STATE_NAME}.handleException(${name});` - }); - } } } } else if (nodeType === 'WithStatement') {