swc-project/swc · error · Error
Expected only one name
Error message
Expected only one name
What it means
Fired during @layer at-rule prelude canonicalization: a layer name list contained more than one name while the at-rule has a block, i.e. '@layer a, b { ... }'. The spec's @layer block form allows only a single layer name, so the parser reports this error on the name-list span.
Source
Thrown at crates/swc_css_parser/src/parser/util.rs:103
}
_ => {
unreachable!();
}
},
_ => {
unreachable!();
}
};
at_rule.prelude = match self
.parse_according_to_grammar(&list_of_component_values, |parser| {
parser.parse_at_rule_prelude(&normalized_at_rule_name)
}) {
Ok(at_rule_prelude) => match at_rule_prelude {
Some(AtRulePrelude::LayerPrelude(LayerPrelude::NameList(name_list)))
if name_list.name_list.len() > 1 && at_rule.block.is_some() =>
{
self.errors.push(Error::new(
name_list.span,
ErrorKind::Expected("only one name"),
));
Some(Box::new(AtRulePrelude::ListOfComponentValues(
list_of_component_values,
)))
}
None if normalized_at_rule_name == "layer" && at_rule.block.is_none() => {
self.errors.push(Error::new(
at_rule.span,
ErrorKind::Expected("at least one name"),
));
Some(Box::new(AtRulePrelude::ListOfComponentValues(
list_of_component_values,
)))
}View on GitHub (pinned to 5176682b65)
Solutions
- Use a single layer name in the block form: '@layer a { ... }'
- Move extra names into separate '@layer name;' statements without a block
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/swc_css_parser/src/parser/util.rs:103 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of swc-project/swc@5176682b65 (2026-08-17).
Data as JSON: /api/errors/3cd79b54f8a338c2.
Report an issue: GitHub.