Skip to content

Commit

Permalink
fix(transformer/arrow-function): handle unicode when capitalizing pro…
Browse files Browse the repository at this point in the history
…perty name (#7311)

Previously was assuming property name starts with an ASCII character. If it started with a multi-byte unicode char, `&property[1..]` would panic.
  • Loading branch information
overlookmotel committed Nov 17, 2024
1 parent 7fc8905 commit c4d5c2d
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions crates/oxc_transformer/src/common/arrow_function_converter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -812,13 +812,21 @@ impl<'a> ArrowFunctionConverter<'a> {
name.push_str("get");
}

// Capitalize the first letter of the property name.
if let Some(first_byte) = property.as_bytes().first() {
name.push(first_byte.to_ascii_uppercase() as char);
}
if property.len() > 1 {
name.push_str(&property[1..]);
// Capitalize the first letter of the property name
if let Some(&first_byte) = property.as_bytes().first() {
if first_byte.is_ascii() {
name.push(first_byte.to_ascii_uppercase() as char);
if property.len() > 1 {
name.push_str(&property[1..]);
}
} else {
let mut chars = property.chars();
let first_char = chars.next().unwrap();
name.extend(first_char.to_uppercase());
name.push_str(chars.as_str());
}
}

ctx.ast.atom(name.into_bump_str())
}

Expand Down

0 comments on commit c4d5c2d

Please sign in to comment.