Skip to content

Commit

Permalink
fix(codegen): print parenthesis on negative bigint lit when neccessary
Browse files Browse the repository at this point in the history
  • Loading branch information
camc314 committed Jan 5, 2025
1 parent cec63e2 commit 93a91ba
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions crates/oxc_codegen/src/gen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1167,7 +1167,7 @@ impl GenExpr for Expression<'_> {
Self::BooleanLiteral(lit) => lit.print(p, ctx),
Self::NullLiteral(lit) => lit.print(p, ctx),
Self::NumericLiteral(lit) => lit.print_expr(p, precedence, ctx),
Self::BigIntLiteral(lit) => lit.print(p, ctx),
Self::BigIntLiteral(lit) => lit.print_expr(p, precedence, ctx),
Self::RegExpLiteral(lit) => lit.print(p, ctx),
Self::StringLiteral(lit) => lit.print(p, ctx),
Self::Identifier(ident) => ident.print(p, ctx),
Expand Down Expand Up @@ -1306,16 +1306,20 @@ impl GenExpr for NumericLiteral<'_> {
}
}

impl Gen for BigIntLiteral<'_> {
fn gen(&self, p: &mut Codegen, _ctx: Context) {
impl GenExpr for BigIntLiteral<'_> {
fn gen_expr(&self, p: &mut Codegen, precedence: Precedence, _ctx: Context) {
let raw = self.raw.as_str().cow_replace('_', "");
if raw.starts_with('-') {
p.print_space_before_operator(Operator::Unary(UnaryOperator::UnaryNegation));
}

p.print_space_before_identifier();
p.add_source_mapping(self.span);
p.print_str(&raw);
if !raw.starts_with('-') {
p.print_str(&raw);
} else if precedence >= Precedence::Prefix {
p.print_ascii_byte(b'(');
p.print_str(&raw);
p.print_ascii_byte(b')');
} else {
p.print_str(&raw);
}
}
}

Expand Down Expand Up @@ -3310,7 +3314,7 @@ impl Gen for TSLiteral<'_> {
Self::BooleanLiteral(decl) => decl.print(p, ctx),
Self::NullLiteral(decl) => decl.print(p, ctx),
Self::NumericLiteral(decl) => decl.print_expr(p, Precedence::Lowest, ctx),
Self::BigIntLiteral(decl) => decl.print(p, ctx),
Self::BigIntLiteral(decl) => decl.print_expr(p, Precedence::Lowest, ctx),
Self::RegExpLiteral(decl) => decl.print(p, ctx),
Self::StringLiteral(decl) => decl.print(p, ctx),
Self::TemplateLiteral(decl) => decl.print(p, ctx),
Expand Down

0 comments on commit 93a91ba

Please sign in to comment.