Repository: swc-project/swc (rust)

Issue:
Eval not handling bool value
### Describe the bug

It looks like the minifier::Eval is not handling Lit::Bool value.

https://github.com/swc-project/swc/blob/d0e2e3c43b01c3e18b2b854213ebc8217f36c73b/crates/swc_ecma_minifier/src/eval.rs#L92

### Input code

```typescript
const a=true;
```


### Config

_No response_

### Playground link

_No response_

### Expected behavior

I just use Evaluator to guess  Expr as Result of Lit, but fails in bool value.

### Actual behavior

_No response_

### Version

swc_ecma_minifier = 0.157.1

### Additional context

_No response_

Pull request description:
fix(es/minifier): handle boolean in Evaluator
<!-- Note: CI script will automatically rebase your PR so please do not rebase unless required -->

<!-- Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. -->

**Description:**

<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->

**BREAKING CHANGE:**

<!--
If this PR introduces a breaking change, it must contain a notice for it to be included in the CHANGELOG. Add description or remove entirely if not breaking.

You may need to update `MIGRATION.md` for the breaking changes.
-->

**Related issue (if exists):**
Fix #5953

Patch:
diff --git a/crates/swc_ecma_minifier/src/eval.rs b/crates/swc_ecma_minifier/src/eval.rs
index ad3cb8b89b..1451b9e8ca 100644
--- a/crates/swc_ecma_minifier/src/eval.rs
+++ b/crates/swc_ecma_minifier/src/eval.rs
@@ -88,10 +88,13 @@ impl Evaluator {
         match e {
             Expr::Seq(s) => return self.eval(s.exprs.last()?),
 
-            Expr::Lit(l @ Lit::Null(..))
-            | Expr::Lit(l @ Lit::Num(..) | l @ Lit::Str(..) | l @ Lit::BigInt(..)) => {
-                return Some(EvalResult::Lit(l.clone()))
-            }
+            Expr::Lit(
+                l @ Lit::Num(..)
+                | l @ Lit::Str(..)
+                | l @ Lit::BigInt(..)
+                | l @ Lit::Bool(..)
+                | l @ Lit::Null(..),
+            ) => return Some(EvalResult::Lit(l.clone())),
 
             Expr::Tpl(t) => {
                 return self.eval_tpl(t);


Test patch:
diff --git a/crates/swc_ecma_minifier/tests/eval.rs b/crates/swc_ecma_minifier/tests/eval.rs
index 93d71b2d6c..3596279d46 100644
--- a/crates/swc_ecma_minifier/tests/eval.rs
+++ b/crates/swc_ecma_minifier/tests/eval.rs
@@ -66,6 +66,12 @@ fn simple() {
     assert_eq!(eval("const foo = 4", "foo").unwrap(), "4");
 }
 
+#[test]
+fn eval_lit() {
+    assert_eq!(eval("", "true").unwrap(), "true");
+    assert_eq!(eval("", "false").unwrap(), "false");
+}
+
 struct PartialInliner {
     marks: Marks,
     eval: Option<Evaluator>,