mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
feat(codegen): minify arrow expr (x) => y -> x => y (#8078)
This commit is contained in:
parent
728ed20c1c
commit
47276679f5
3 changed files with 27 additions and 14 deletions
|
|
@ -1791,9 +1791,22 @@ impl GenExpr for ArrowFunctionExpression<'_> {
|
||||||
type_parameters.print(p, ctx);
|
type_parameters.print(p, ctx);
|
||||||
}
|
}
|
||||||
p.add_source_mapping(self.span);
|
p.add_source_mapping(self.span);
|
||||||
p.print_ascii_byte(b'(');
|
let remove_params_wrap = p.options.minify
|
||||||
self.params.print(p, ctx);
|
&& self.params.items.len() == 1
|
||||||
p.print_ascii_byte(b')');
|
&& self.params.rest.is_none()
|
||||||
|
&& self.type_parameters.is_none()
|
||||||
|
&& self.return_type.is_none()
|
||||||
|
&& {
|
||||||
|
let param = &self.params.items[0];
|
||||||
|
param.decorators.is_empty()
|
||||||
|
&& !param.has_modifier()
|
||||||
|
&& param.pattern.kind.is_binding_identifier()
|
||||||
|
&& param.pattern.type_annotation.is_none()
|
||||||
|
&& !param.pattern.optional
|
||||||
|
};
|
||||||
|
p.wrap(!remove_params_wrap, |p| {
|
||||||
|
self.params.print(p, ctx);
|
||||||
|
});
|
||||||
if let Some(return_type) = &self.return_type {
|
if let Some(return_type) = &self.return_type {
|
||||||
p.print_str(":");
|
p.print_str(":");
|
||||||
p.print_soft_space();
|
p.print_soft_space();
|
||||||
|
|
|
||||||
|
|
@ -189,14 +189,14 @@ fn r#yield() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn arrow() {
|
fn arrow() {
|
||||||
test_minify("x => a, b", "(x)=>a,b;");
|
test_minify("x => a, b", "x=>a,b;");
|
||||||
test_minify("x => (a, b)", "(x)=>(a,b);");
|
test_minify("x => (a, b)", "x=>(a,b);");
|
||||||
test_minify("x => (a => b)", "(x)=>(a)=>b;");
|
test_minify("x => (a => b)", "x=>a=>b;");
|
||||||
test_minify("x => y => a, b", "(x)=>(y)=>a,b;");
|
test_minify("x => y => a, b", "x=>y=>a,b;");
|
||||||
test_minify("x => y => (a = b)", "(x)=>(y)=>a=b;");
|
test_minify("x => y => (a = b)", "x=>y=>a=b;");
|
||||||
test_minify("x => y => z => a = b, c", "(x)=>(y)=>(z)=>a=b,c;");
|
test_minify("x => y => z => a = b, c", "x=>y=>z=>a=b,c;");
|
||||||
test_minify("x => y => z => a = (b, c)", "(x)=>(y)=>(z)=>a=(b,c);");
|
test_minify("x => y => z => a = (b, c)", "x=>y=>z=>a=(b,c);");
|
||||||
test_minify("x => ({} + 0)", "(x)=>({})+0;");
|
test_minify("x => ({} + 0)", "x=>({})+0;");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,13 @@ Original | minified | minified | gzip | gzip | Fixture
|
||||||
|
|
||||||
544.10 kB | 73.32 kB | 72.48 kB | 26.13 kB | 26.20 kB | lodash.js
|
544.10 kB | 73.32 kB | 72.48 kB | 26.13 kB | 26.20 kB | lodash.js
|
||||||
|
|
||||||
555.77 kB | 276.06 kB | 270.13 kB | 91.14 kB | 90.80 kB | d3.js
|
555.77 kB | 276.01 kB | 270.13 kB | 91.13 kB | 90.80 kB | d3.js
|
||||||
|
|
||||||
1.01 MB | 466.82 kB | 458.89 kB | 126.74 kB | 126.71 kB | bundle.min.js
|
1.01 MB | 466.62 kB | 458.89 kB | 126.69 kB | 126.71 kB | bundle.min.js
|
||||||
|
|
||||||
1.25 MB | 661.47 kB | 646.76 kB | 163.94 kB | 163.73 kB | three.js
|
1.25 MB | 661.47 kB | 646.76 kB | 163.94 kB | 163.73 kB | three.js
|
||||||
|
|
||||||
2.14 MB | 740.44 kB | 724.14 kB | 181.35 kB | 181.07 kB | victory.js
|
2.14 MB | 740.43 kB | 724.14 kB | 181.34 kB | 181.07 kB | victory.js
|
||||||
|
|
||||||
3.20 MB | 1.02 MB | 1.01 MB | 332.00 kB | 331.56 kB | echarts.js
|
3.20 MB | 1.02 MB | 1.01 MB | 332.00 kB | 331.56 kB | echarts.js
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue