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

  1. Use a single layer name in the block form: '@layer a { ... }'
  2. 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.