{"record":{"id":"53a8b1ddad04d63f","repo":"swc-project/swc","slug":"expected-character-after-u-in-unicode-range","errorCode":null,"errorMessage":"Expected '+' character after 'u' in unicode range","messagePattern":"Expected '\\+' character after 'u' in unicode range","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/swc_css_parser/src/parser/values_and_units/mod.rs","lineNumber":2897,"sourceCode":"                return Err(Error::new(\n                    span,\n                    ErrorKind::Expected(\"dimension, number or '?' delim token\"),\n                ));\n            }\n        }\n\n        let mut chars = unicode_range.chars();\n\n        // 1. Skipping the first u token, concatenate the representations of all the\n        // tokens in the production together. Let this be text.\n        chars.next();\n\n        // 2. If the first character of text is U+002B PLUS SIGN, consume it. Otherwise,\n        // this is an invalid <urange>, and this algorithm must exit.\n        let mut next = chars.next();\n\n        if next != Some('+') {\n            return Err(Error::new(\n                span,\n                ErrorKind::Expected(\"'+' character after 'u' in unicode range\"),\n            ));\n        } else {\n            next = chars.next();\n        }\n\n        // 3. Consume as many hex digits from text as possible. then consume as many\n        // U+003F QUESTION MARK (?) code points as possible. If zero code points\n        // were consumed, or more than six code points were consumed, this is an\n        // invalid <urange>, and this algorithm must exit.\n        let mut start = String::new();\n\n        loop {\n            match next {\n                Some(c) if c.is_ascii_digit() => {\n                    start.push(c);\n","sourceCodeStart":2879,"sourceCodeEnd":2915,"githubUrl":"https://github.com/swc-project/swc/blob/5176682b65416c6b5de6b47379ae1588ea3ecb3f/crates/swc_css_parser/src/parser/values_and_units/mod.rs#L2879-L2915","documentation":"Fired during <urange> validation: after concatenating tokens, the text following the leading 'u' must begin with '+' (U+002B). Per the spec's urange algorithm, a missing plus sign makes the production invalid and parsing exits with this error.","triggerScenarios":"Thrown at crates/swc_css_parser/src/parser/values_and_units/mod.rs:2897 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Write the range as 'U+...' with the plus sign after U","Remove the space between U and + if present"],"exampleFix":null,"handlingStrategy":"validation","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"}