|
1 | | -use std::mem; |
2 | | - |
3 | 1 | use oxc::{ |
4 | 2 | allocator::FromIn, |
5 | 3 | ast::ast::{Expression, TemplateElementValue, TemplateLiteral}, |
6 | | - span::{Atom, GetSpan, SPAN}, |
| 4 | + span::Atom, |
7 | 5 | }; |
8 | 6 |
|
9 | | -use crate::{ |
10 | | - analyzer::Analyzer, build_effect, entity::Entity, transformer::Transformer, utils::ast::AstKind2, |
11 | | -}; |
| 7 | +use crate::{analyzer::Analyzer, build_effect, entity::Entity, transformer::Transformer}; |
12 | 8 |
|
13 | 9 | impl<'a> Analyzer<'a> { |
14 | 10 | pub fn exec_template_literal(&mut self, node: &'a TemplateLiteral<'a>) -> Entity<'a> { |
@@ -36,52 +32,19 @@ impl<'a> Transformer<'a> { |
36 | 32 | let mut quasis_iter = quasis.into_iter(); |
37 | 33 | let mut transformed_exprs = self.ast.vec(); |
38 | 34 | let mut transformed_quasis = vec![]; |
39 | | - let mut pending_effects = vec![]; |
40 | 35 | transformed_quasis |
41 | 36 | .push(quasis_iter.next().unwrap().value.cooked.as_ref().unwrap().to_string()); |
42 | | - let exprs_len = expressions.len(); |
43 | | - for (index, expr) in expressions.into_iter().enumerate() { |
44 | | - let is_last = index == exprs_len - 1; |
45 | | - let expr_span = expr.span(); |
| 37 | + for expr in expressions { |
| 38 | + let expr = self.transform_expression(expr, true).unwrap(); |
| 39 | + transformed_exprs.push(expr); |
| 40 | + |
46 | 41 | let quasi_str = quasis_iter.next().unwrap().value.cooked.as_ref().unwrap().to_string(); |
47 | | - if let Some(literal) = self.get_folded_literal(AstKind2::Expression(expr)) { |
48 | | - if let Some(effect) = self.transform_expression(expr, false) { |
49 | | - pending_effects.push(Some(effect)); |
50 | | - } |
51 | | - if !pending_effects.is_empty() && is_last { |
52 | | - transformed_exprs.push(build_effect!( |
53 | | - &self.ast, |
54 | | - expr_span, |
55 | | - mem::take(&mut pending_effects); |
56 | | - literal.build_expr(self, SPAN, None) |
57 | | - )); |
58 | | - transformed_quasis.push(quasi_str); |
59 | | - } else { |
60 | | - let last_quasi = transformed_quasis.pop().unwrap(); |
61 | | - let expr_str = literal.to_string(self.allocator); |
62 | | - transformed_quasis.push(format!("{}{}{}", last_quasi, expr_str, quasi_str)); |
63 | | - } |
64 | | - } else { |
65 | | - let expr = self.transform_expression(expr, true).unwrap(); |
66 | | - transformed_exprs.push(build_effect!( |
67 | | - &self.ast, |
68 | | - expr_span, |
69 | | - mem::take(&mut pending_effects); |
70 | | - expr |
71 | | - )); |
72 | | - transformed_quasis.push(quasi_str); |
73 | | - } |
| 42 | + transformed_quasis.push(quasi_str); |
74 | 43 | } |
75 | 44 | if transformed_exprs.is_empty() { |
76 | 45 | let s = transformed_quasis.pop().unwrap(); |
77 | | - Some(build_effect!( |
78 | | - &self.ast, |
79 | | - *span, |
80 | | - pending_effects; |
81 | | - self.ast.expression_string_literal(*span, self.ast.atom(&s), None) |
82 | | - )) |
| 46 | + Some(self.ast.expression_string_literal(*span, self.ast.atom(&s), None)) |
83 | 47 | } else { |
84 | | - assert!(pending_effects.is_empty()); |
85 | 48 | let mut quasis = self.ast.vec(); |
86 | 49 | let quasis_len = transformed_quasis.len(); |
87 | 50 | for (index, quasi) in transformed_quasis.into_iter().enumerate() { |
|
0 commit comments