{"record":{"id":"51dd82827923e88d","repo":"swc-project/swc","slug":"internal-error-entered-unreachable-code-51dd82","errorCode":null,"errorMessage":"internal error: entered unreachable code","messagePattern":"internal error: entered unreachable code","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/swc_css_compat/src/compiler/legacy_rgb_and_hsl.rs","lineNumber":56,"sourceCode":"            } else if is_hsl {\n                function.value = function\n                    .value\n                    .drain(..)\n                    .map(|n| {\n                        if let Some(Angle {\n                            span,\n                            value: Number { value, .. },\n                            unit,\n                            ..\n                        }) = n.as_hue().and_then(|hue| hue.as_angle())\n                        {\n                            let value = match &*unit.value.to_ascii_lowercase() {\n                                \"deg\" => *value,\n                                \"grad\" => value * 180.0 / 200.0,\n                                \"rad\" => value * 180.0 / PI,\n                                \"turn\" => value * 360.0,\n                                _ => {\n                                    unreachable!();\n                                }\n                            };\n\n                            ComponentValue::Number(Box::new(Number {\n                                span: *span,\n                                value: value.round(),\n                                raw: None,\n                            }))\n                        } else {\n                            n\n                        }\n                    })\n                    .collect();\n            }\n\n            if is_rgb || is_hsl {\n                if let Some(alpha_value) = function\n                    .value","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/swc-project/swc/blob/5176682b65416c6b5de6b47379ae1588ea3ecb3f/crates/swc_css_compat/src/compiler/legacy_rgb_and_hsl.rs#L38-L74","documentation":"The legacy rgb()/hsl() compat pass converts hue angles to plain numbers, accepting deg/grad/rad/turn after lowercasing the unit. Any other dimension unit in the hue position (px, %, pt, or an unknown unit) reaches unreachable!() — the parser accepted the dimension but the lowering has no conversion for it.","triggerScenarios":"Compiling CSS through swc_css_compat's legacy rgb/hsl lowering when a legacy hsl() hue component has a unit other than deg/grad/rad/turn — e.g. `hsl(10px, 50%, 50%)`, `hsl(2rem, ...)`, or a typo like `hsl(360d ...)`.","commonSituations":"Malformed hand-written CSS; CSS generated by tools that emit unusual units in the hue slot; values copied from design tools; fuzzing corpora.","solutions":["Fix the hue value: use a unitless number or one of deg/grad/rad/turn (e.g. `hsl(180deg, 50%, 50%)`)","Pre-validate color functions (scan hsl(/hsla( hue units) before running compat passes","Report the exact value to swc so the pass can emit a proper parse error instead of panicking"],"exampleFix":"/* before */\ncolor: hsl(10px, 50%, 50%);\n\n/* after */\ncolor: hsl(10deg, 50%, 50%);","handlingStrategy":"validation","validationCode":"// Reject legacy hsl()/hsla() whose hue has a non-angle unit\nlet bad_hue = regex::Regex::new(\n    r#\"(?i)hsla?\\(\\s*[+-]?[\\d.]+(px|em|rem|ex|ch|vw|vh|vmin|vmax|cm|mm|in|pt|pc|q|fr|d|%)\"#,\n).unwrap();\nif bad_hue.is_match(&css) {\n    return Err(\"hsl() hue must be unitless or deg/grad/rad/turn\".into());\n}","typeGuard":null,"tryCatchPattern":"match std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| compile_css(&css))) {\n    Ok(v) => v,\n    Err(p) if panic_message(&p).contains(\"unreachable\") => {\n        // fallback: strip compat lowering for colors (raise target) and recompile\n    }\n    Err(p) => std::panic::resume_unwind(p),\n}","preventionTips":["Validate color function syntax in CI lint for generated CSS","Normalize hues to unitless numbers or deg before compat passes","Fuzz color inputs in tests to catch unit typos early"],"tags":["swc","css","color","hsl","compat"],"backgroundTag":"css-color-unit-unsupported","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"}