mirror of
https://github.com/swc-project/swc.git
synced 2024-12-28 08:04:43 +03:00
fix(es/minifier): Fix evaluator (#3391)
This commit is contained in:
parent
3eaebdf479
commit
38c2499358
@ -99,6 +99,7 @@ where
|
||||
);
|
||||
self.simple_props
|
||||
.insert((name.to_id(), s.value.clone()), value);
|
||||
self.mode.store(name.to_id(), n.init.as_deref().unwrap());
|
||||
}
|
||||
PropName::Ident(i) => {
|
||||
tracing::trace!(
|
||||
@ -107,6 +108,7 @@ where
|
||||
);
|
||||
self.simple_props
|
||||
.insert((name.to_id(), i.sym.clone()), value);
|
||||
self.mode.store(name.to_id(), n.init.as_deref().unwrap());
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
@ -200,6 +200,8 @@ where
|
||||
i.id.span.ctxt
|
||||
);
|
||||
|
||||
self.mode.store(i.to_id(), &*init);
|
||||
|
||||
self.lits.insert(i.to_id(), init.clone());
|
||||
}
|
||||
return;
|
||||
|
@ -171,38 +171,34 @@ impl VisitMut for PartialInliner {
|
||||
e.visit_mut_children_with(self);
|
||||
|
||||
if let Some(evaluator) = self.eval.as_mut() {
|
||||
match e {
|
||||
Expr::TaggedTpl(tt) => {
|
||||
if tt.tag.is_ident_ref_to("css".into()) {
|
||||
let res = evaluator.eval_tpl(&tt.tpl);
|
||||
if let Expr::TaggedTpl(tt) = e {
|
||||
if tt.tag.is_ident_ref_to("css".into()) {
|
||||
let res = evaluator.eval_tpl(&tt.tpl);
|
||||
|
||||
let res = match res {
|
||||
Some(v) => v,
|
||||
None => return,
|
||||
};
|
||||
let res = match res {
|
||||
Some(v) => v,
|
||||
None => return,
|
||||
};
|
||||
|
||||
match res {
|
||||
EvalResult::Lit(Lit::Str(s)) => {
|
||||
let el = TplElement {
|
||||
span: s.span,
|
||||
tail: true,
|
||||
cooked: Some(s.clone()),
|
||||
raw: s,
|
||||
};
|
||||
tt.tpl = Tpl {
|
||||
span: el.span,
|
||||
exprs: Default::default(),
|
||||
quasis: vec![el],
|
||||
};
|
||||
}
|
||||
_ => {
|
||||
unreachable!()
|
||||
}
|
||||
match res {
|
||||
EvalResult::Lit(Lit::Str(s)) => {
|
||||
let el = TplElement {
|
||||
span: s.span,
|
||||
tail: true,
|
||||
cooked: Some(s.clone()),
|
||||
raw: s,
|
||||
};
|
||||
tt.tpl = Tpl {
|
||||
span: el.span,
|
||||
exprs: Default::default(),
|
||||
quasis: vec![el],
|
||||
};
|
||||
}
|
||||
_ => {
|
||||
unreachable!()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -466,3 +462,44 @@ fn partial_7() {
|
||||
",
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn partial_8() {
|
||||
PartialInliner::expect(
|
||||
"const darken = c => c
|
||||
const color = 'red'
|
||||
const otherColor = 'green'
|
||||
const mediumScreen = '680px'
|
||||
const animationDuration = '200ms'
|
||||
const animationName = 'my-cool-animation'
|
||||
const obj = { display: 'block' }
|
||||
|
||||
export default ({ display }) => (
|
||||
css`
|
||||
p.${color} {
|
||||
color: ${otherColor};
|
||||
display: ${obj.display};
|
||||
}
|
||||
`
|
||||
)
|
||||
",
|
||||
"
|
||||
const darken = c => c
|
||||
const color = 'red'
|
||||
const otherColor = 'green'
|
||||
const mediumScreen = '680px'
|
||||
const animationDuration = '200ms'
|
||||
const animationName = 'my-cool-animation'
|
||||
const obj = { display: 'block' }
|
||||
|
||||
export default ({ display }) => (
|
||||
css`
|
||||
p.red {
|
||||
color: green;
|
||||
display: block;
|
||||
}
|
||||
`
|
||||
)
|
||||
",
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user