DioxusLabs/dioxus · error · syn::Error

Expected an expression

Error message

Expected an expression

What it means

`parse_attribute_value_from_block` handles `attr={...}` blocks containing a single statement; this error fires when the statement is neither a formatted string literal nor a plain expression — i.e. the block's content cannot be interpreted as an attribute value. Typical cause is multiple statements or unsupported syntax inside the braces.

Solutions

  1. Provide a valid Rust expression in the attribute value; the parser expected an expression at this position.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/rsx/src/attribute.rs:569 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of DioxusLabs/dioxus@24f6a829df (2026-08-23). Data as JSON: /api/errors/a5602b5567b5f555. Report an issue: GitHub.

Appendix: source

Thrown at packages/rsx/src/attribute.rs:569

                block.span(),
                "Expected a single statement in the if block",
            ));
        }

        // either an ifmt or an expr in the block
        let stmt = &stmts[0];

        // Either it's a valid ifmt or an expression
        match stmt {
            syn::Stmt::Expr(exp, None) => {
                // Try parsing the statement as an IfmtInput by passing it through tokens
                let value: Result<HotLiteral, syn::Error> = syn::parse2(exp.to_token_stream());
                Ok(match value {
                    Ok(res) => Box::new(AttributeValue::AttrLiteral(res)),
                    Err(_) => Box::new(AttributeValue::AttrExpr(PartialExpr::from_expr(exp))),
                })
            }
            _ => Err(syn::Error::new(stmt.span(), "Expected an expression")),
        }
    }

    fn to_tokens_with_terminated(
        &self,
        tokens: &mut TokenStream2,
        terminated: bool,
        contains_expression: bool,
    ) {
        let IfAttributeValue {
            if_expr,
            then_value,
            else_value,
            ..
        } = self;

        // Quote an attribute value and convert the value to a string if it is formatted
        // We always quote formatted segments as strings inside if statements so they have a consistent type

View on GitHub (pinned to 24f6a829df)