mirror of
https://github.com/danbulant/oxc
synced 2026-05-22 05:38:54 +00:00
refactor(codegen): prepare to add leading comments by adding a template method pattern (#5784)
This commit is contained in:
parent
6dd6f7ca26
commit
e613a3d877
2 changed files with 476 additions and 464 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -206,7 +206,7 @@ impl<'a> Codegen<'a> {
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn build(mut self, program: &Program<'_>) -> CodegenReturn {
|
pub fn build(mut self, program: &Program<'_>) -> CodegenReturn {
|
||||||
program.gen(&mut self, Context::default());
|
program.print(&mut self, Context::default());
|
||||||
let source_text = self.into_source_text();
|
let source_text = self.into_source_text();
|
||||||
let source_map = self.sourcemap_builder.map(SourcemapBuilder::into_sourcemap);
|
let source_map = self.sourcemap_builder.map(SourcemapBuilder::into_sourcemap);
|
||||||
CodegenReturn { source_text, source_map }
|
CodegenReturn { source_text, source_map }
|
||||||
|
|
@ -233,7 +233,7 @@ impl<'a> Codegen<'a> {
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn print_expression(&mut self, expr: &Expression<'_>) {
|
pub fn print_expression(&mut self, expr: &Expression<'_>) {
|
||||||
expr.gen_expr(self, Precedence::Lowest, Context::empty());
|
expr.print_expr(self, Precedence::Lowest, Context::empty());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -353,7 +353,7 @@ impl<'a> Codegen<'a> {
|
||||||
|
|
||||||
fn print_sequence<T: Gen>(&mut self, items: &[T], ctx: Context) {
|
fn print_sequence<T: Gen>(&mut self, items: &[T], ctx: Context) {
|
||||||
for item in items {
|
for item in items {
|
||||||
item.gen(self, ctx);
|
item.print(self, ctx);
|
||||||
self.print_comma();
|
self.print_comma();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -404,7 +404,7 @@ impl<'a> Codegen<'a> {
|
||||||
self.print_hard_space();
|
self.print_hard_space();
|
||||||
}
|
}
|
||||||
self.print_next_indent_as_space = true;
|
self.print_next_indent_as_space = true;
|
||||||
stmt.gen(self, ctx);
|
stmt.print(self, ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -413,7 +413,7 @@ impl<'a> Codegen<'a> {
|
||||||
self.print_curly_braces(stmt.span, stmt.body.is_empty(), |p| {
|
self.print_curly_braces(stmt.span, stmt.body.is_empty(), |p| {
|
||||||
for stmt in &stmt.body {
|
for stmt in &stmt.body {
|
||||||
p.print_semicolon_if_needed();
|
p.print_semicolon_if_needed();
|
||||||
stmt.gen(p, ctx);
|
stmt.print(p, ctx);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
self.needs_semicolon = false;
|
self.needs_semicolon = false;
|
||||||
|
|
@ -423,11 +423,11 @@ impl<'a> Codegen<'a> {
|
||||||
// ```
|
// ```
|
||||||
// let mut iter = items.iter();
|
// let mut iter = items.iter();
|
||||||
// let Some(item) = iter.next() else { return };
|
// let Some(item) = iter.next() else { return };
|
||||||
// item.gen(self, ctx);
|
// item.print(self, ctx);
|
||||||
// for item in iter {
|
// for item in iter {
|
||||||
// self.print_comma();
|
// self.print_comma();
|
||||||
// self.print_soft_space();
|
// self.print_soft_space();
|
||||||
// item.gen(self, ctx);
|
// item.print(self, ctx);
|
||||||
// }
|
// }
|
||||||
// ```
|
// ```
|
||||||
// But it turned out this was actually a bit slower.
|
// But it turned out this was actually a bit slower.
|
||||||
|
|
@ -438,7 +438,7 @@ impl<'a> Codegen<'a> {
|
||||||
self.print_comma();
|
self.print_comma();
|
||||||
self.print_soft_space();
|
self.print_soft_space();
|
||||||
}
|
}
|
||||||
item.gen(self, ctx);
|
item.print(self, ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -448,7 +448,7 @@ impl<'a> Codegen<'a> {
|
||||||
self.print_comma();
|
self.print_comma();
|
||||||
self.print_soft_space();
|
self.print_soft_space();
|
||||||
}
|
}
|
||||||
item.gen_expr(self, precedence, ctx);
|
item.print_expr(self, precedence, ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue