{"record":{"id":"e74f198fb0e68f7b","repo":"swc-project/swc","slug":"as-bool-for-jsxtext","errorCode":null,"errorMessage":"as_bool() for JSXText","messagePattern":"as_bool\\(\\) for JSXText","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/swc_ecma_utils/src/lib.rs","lineNumber":3028,"sourceCode":"\n        Expr::Unary(UnaryExpr {\n            op: op!(\"void\"), ..\n        }) => Known(false),\n\n        Expr::Lit(ref lit) => {\n            return (\n                Pure,\n                Known(match *lit {\n                    Lit::Num(Number { value: n, .. }) => is_truthy_number(n),\n                    Lit::BigInt(ref v) => v\n                        .value\n                        .to_string()\n                        .contains(|c: char| matches!(c, '1'..='9')),\n                    Lit::Bool(b) => b.value,\n                    Lit::Str(Str { ref value, .. }) => !value.is_empty(),\n                    Lit::Null(..) => false,\n                    Lit::Regex(..) => true,\n                    Lit::JSXText(..) => unreachable!(\"as_bool() for JSXText\"),\n                    #[cfg(swc_ast_unknown)]\n                    _ => return (Pure, Unknown),\n                }),\n            );\n        }\n\n        //TODO?\n        _ => Unknown,\n    };\n\n    if expr.may_have_side_effects(ctx) {\n        (MayBeImpure, val)\n    } else {\n        (Pure, val)\n    }\n}\n\nfn cast_to_number(expr: &Expr, ctx: ExprCtx) -> (Purity, Value<f64>) {","sourceCodeStart":3010,"sourceCodeEnd":3046,"githubUrl":"https://github.com/swc-project/swc/blob/5176682b65416c6b5de6b47379ae1588ea3ecb3f/crates/swc_ecma_utils/src/lib.rs#L3010-L3046","documentation":"An unreachable!() arm in as_bool (swc_ecma_utils lib.rs:3028). The function statically evaluates which literals are truthy (numbers, bigints, bools, strings, null, regex...); JSXText is not a boolean-context literal — JSX text used in an expression position has no truthiness semantics that swc models, so reaching this arm means a JSXText literal was fed to as_bool, a case the evaluator deliberately refuses. The JSXText literal is the input at fault.","triggerScenarios":"Thrown at crates/swc_ecma_utils/src/lib.rs:3028 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the expression kind before calling as_bool and skip JSXText-bearing expressions","Return Known(true)/Unknown for JSXText instead of panicking if a conservative answer is acceptable","Avoid feeding JSX-containing ASTs into boolean static-evaluation passes"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5176682b65416c6b5de6b47379ae1588ea3ecb3f","analyzedAt":"2026-08-17T16:16:52.067Z","contentChangedAt":"2026-08-17T16:16:52.067Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}