mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 04:08:41 +00:00
fix(codegen): print if else without block with proper indentation (#8135)
This commit is contained in:
parent
6b51e6dff1
commit
ad61e70186
3 changed files with 25 additions and 3 deletions
|
|
@ -3,7 +3,7 @@ use std::path::Path;
|
|||
|
||||
use oxc_allocator::Allocator;
|
||||
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
||||
use oxc_parser::{Parser, ParserReturn};
|
||||
use oxc_parser::{ParseOptions, Parser, ParserReturn};
|
||||
use oxc_span::SourceType;
|
||||
use pico_args::Arguments;
|
||||
|
||||
|
|
@ -52,7 +52,12 @@ fn parse<'a>(
|
|||
source_text: &'a str,
|
||||
source_type: SourceType,
|
||||
) -> Option<ParserReturn<'a>> {
|
||||
let ret = Parser::new(allocator, source_text, source_type).parse();
|
||||
let ret = Parser::new(allocator, source_text, source_type)
|
||||
.with_options(ParseOptions {
|
||||
allow_return_outside_function: true,
|
||||
..ParseOptions::default()
|
||||
})
|
||||
.parse();
|
||||
if !ret.errors.is_empty() {
|
||||
for error in ret.errors {
|
||||
println!("{:?}", error.with_source_code(source_text.to_string()));
|
||||
|
|
|
|||
|
|
@ -301,7 +301,12 @@ fn print_if(if_stmt: &IfStatement<'_>, p: &mut Codegen, ctx: Context) {
|
|||
p.print_soft_newline();
|
||||
}
|
||||
}
|
||||
stmt => p.print_body(stmt, false, ctx),
|
||||
stmt => {
|
||||
p.print_body(stmt, false, ctx);
|
||||
if if_stmt.alternate.is_some() {
|
||||
p.print_indent();
|
||||
}
|
||||
}
|
||||
}
|
||||
if let Some(alternate) = if_stmt.alternate.as_ref() {
|
||||
p.print_semicolon_if_needed();
|
||||
|
|
|
|||
|
|
@ -92,6 +92,18 @@ fn for_stmt() {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn if_stmt() {
|
||||
test(
|
||||
"function f() { if (foo) return foo; else if (bar) return foo; }",
|
||||
"function f() {\n\tif (foo) return foo;\n\telse if (bar) return foo;\n}\n",
|
||||
);
|
||||
test_minify(
|
||||
"function f() { if (foo) return foo; else if (bar) return foo; }",
|
||||
"function f(){if(foo)return foo;else if(bar)return foo}",
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn shorthand() {
|
||||
test("let _ = { x }", "let _ = { x };\n");
|
||||
|
|
|
|||
Loading…
Reference in a new issue