slint-ui/slint · error

ExtraBuiltinFunctionCall `{other}`

Error message

ExtraBuiltinFunctionCall `{other}`

What it means

eval_layout.rs implements the interpreter's internal 'extra builtin functions' emitted by layout lowering — the big arms evaluate the box/grid layout solving builtins taking float arrays, paddings and enum arguments. Any other builtin name falls through to `unimplemented!("ExtraBuiltinFunctionCall `{other}`")`, panicking when the expression is evaluated. This almost always indicates a compiler/runtime version mismatch: the compiler that produced the expression emits a builtin the interpreter library does not know.

Source

Thrown at internal/interpreter/eval_layout.rs:331

        "flexbox_layout_info_cross_axis" => {
            let (ch, cv) = (to_cells(&a[0]), to_cells(&a[1]));
            let fp = to_flex_props(&a[2]);
            i_slint_core::layout::flexbox_layout_info_cross_axis(
                Slice::from_slice(&ch),
                Slice::from_slice(&cv),
                Slice::from_slice(&fp),
                to_f32(&a[3]),
                to_f32(&a[4]),
                &to_padding(&a[5]),
                &to_padding(&a[6]),
                to_enum(&a[7]),
                to_enum(&a[8]),
                to_enum(&a[9]),
                to_f32(&a[10]),
            )
            .into()
        }
        other => unimplemented!("ExtraBuiltinFunctionCall `{other}`"),
    }
}

fn eval_info(ctx: &mut EvalContext, e: &Expression) -> LayoutInfo {
    eval_expression(ctx, e).try_into().unwrap_or_default()
}

/// One flexbox cell as seen by the measure callback, after expanding
/// repeaters (a repeater contributes one entry per instance).
struct FlatCell<'a> {
    kind: FlatCellKind<'a>,
    w4h_only: bool,
}

enum FlatCellKind<'a> {
    Static {
        h_info: &'a Expression,
        v_info: &'a Expression,

View on GitHub (pinned to a9ea814a58)

Solutions

  1. Rebuild/reinstall the tool (viewer, LSP, slintpad) so compiler and interpreter crates come from the same slint version.
  2. Check for duplicate slint crate versions in the dependency tree (cargo tree -d) and unify them.
  3. Avoid the layout construct that triggers the call in interpreter contexts until versions match.
  4. Report the builtin name from the panic message upstream if it occurs with fully matched versions.
Defensive patterns

Strategy: fallback

Prevention

When it happens

Trigger: Running .slint through an interpreter (slint-viewer, LSP preview, slintpad, dynamic Python/Node compilation) where the compiled layout lowering calls an extra builtin function not implemented by the interpreter runtime in that binary — e.g. a new/changed grid or flexbox solve signature.

Common situations: The i-slint-compiler used by the tool is newer/older than the interpreter runtime executing it (mixed slint crates in one process); a custom tool embedding i-slint-interpreter with a mismatched compiler version; experimental layout features tried in slintpad.

Related errors


AI-assisted analysis of slint-ui/slint@a9ea814a58 (2026-08-16). Data as JSON: /api/errors/3d1f6f239a566fcc. Report an issue: GitHub.