From d50eb723992816fe36de6071a36258979577521e Mon Sep 17 00:00:00 2001 From: Dunqing <29533304+Dunqing@users.noreply.github.com> Date: Thu, 22 Aug 2024 08:34:42 +0000 Subject: [PATCH] docs(transformer): add documentation for `optional-catch-binding` plugin (#5064) follow-up #4881 --- .../src/es2019/optional_catch_binding.rs | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/crates/oxc_transformer/src/es2019/optional_catch_binding.rs b/crates/oxc_transformer/src/es2019/optional_catch_binding.rs index d54dcff94017f..03c85e96f8c58 100644 --- a/crates/oxc_transformer/src/es2019/optional_catch_binding.rs +++ b/crates/oxc_transformer/src/es2019/optional_catch_binding.rs @@ -1,3 +1,37 @@ +//! ES2019: Optional Catch Binding +//! +//! This plugin transform catch clause without parameter to add a parameter called `unused` in catch clause. +//! +//! > This plugin is included in `preset-env`, in ES2019 +//! +//! ## Example +//! +//! Input: +//! ```js +//! try { +//! throw 0; +//! } catch { +//! doSomethingWhichDoesNotCareAboutTheValueThrown(); +//! } +//! ``` +//! +//! Output: +//! ```js +//! try { +//! throw 0; +//! } catch (_unused) { +//! doSomethingWhichDoesNotCareAboutTheValueThrown(); +//! } +//! ``` +//! +//! ## Implementation +//! +//! Implementation based on [@babel/plugin-transform-optional-catch-binding](https://babel.dev/docs/babel-plugin-transform-optional-catch-binding). +//! +//! ## References: +//! * Babel plugin implementation: +//! * Optional catch binding TC39 proposal: + use std::cell::Cell; use oxc_ast::ast::*; @@ -7,11 +41,6 @@ use oxc_traverse::TraverseCtx; use crate::context::Ctx; -/// ES2019: Optional Catch Binding -/// -/// References: -/// * -/// * pub struct OptionalCatchBinding<'a> { _ctx: Ctx<'a>, } @@ -22,16 +51,6 @@ impl<'a> OptionalCatchBinding<'a> { } /// If CatchClause has no param, add a parameter called `unused`. - /// - /// ```ts - /// try {} - /// catch {} - /// ``` - /// too - /// ```ts - /// try {} - /// catch (_unused) {} - /// ``` #[allow(clippy::unused_self)] pub fn transform_catch_clause(&self, clause: &mut CatchClause<'a>, ctx: &mut TraverseCtx<'a>) { if clause.param.is_some() {