From ac72adbadef1c123c16abc7e526b1ae8d13d7f21 Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Thu, 9 Jan 2025 03:17:39 +0000 Subject: [PATCH] fix(transformer/private-methods): fix panic if instance private accessor in class (#8362) Fix panic if a private accessor is present in class which also has property. e.g.: ```js let C = class C { prop = 1; accessor #private = 2; }; ``` Panic occurred due to trying to unwrap `brand` property, but it's `None` because no private instance methods in the class. --- crates/oxc_transformer/src/es2022/class_properties/class.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/oxc_transformer/src/es2022/class_properties/class.rs b/crates/oxc_transformer/src/es2022/class_properties/class.rs index 26c8ec92b661d..628fe3ec03995 100644 --- a/crates/oxc_transformer/src/es2022/class_properties/class.rs +++ b/crates/oxc_transformer/src/es2022/class_properties/class.rs @@ -607,7 +607,11 @@ impl<'a> ClassProperties<'a, '_> { let mut weakmap_symbol_id = None; let mut has_method = false; exprs.extend(private_props.values().filter_map(|prop| { - if prop.is_method() || prop.is_accessor { + if prop.is_accessor { + return None; + } + + if prop.is_method() { if prop.is_static || has_method { return None; }