Skip to content

panic in constant evaluation while documenting default associated constant #149635

@bonzini

Description

@bonzini

Code

This is similar to #131625, but it used to work until recently:

#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct VMStateFlags(pub u32);
impl VMStateFlags {
    pub const VMS_POINTER: VMStateFlags = VMStateFlags(2);
}

#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct VMStateField {
    pub flags: VMStateFlags,
}

pub unsafe trait VMState {
    const BASE: VMStateField;
    const VARRAY_FLAG: VMStateFlags = {
        panic!("invalid type for variable-sized array");
    };
}

With rustdoc 1.91.1 and 1.92.0-beta.3 (f3f1244 2025-11-09), this works:

$ /usr/bin/rustdoc --edition=2021 --crate-name vmstate vmstate.rs -o doc

With rustdoc 1.93.0-nightly (83e49b7 2025-12-03), I get evaluation panicked.

Version it worked on

1.91.1

1.92.0-beta.3 (f3f1244 2025-11-09)

Version with regression

1.93.0-nightly (83e49b7 2025-12-03)

rustc --version --verbose:

rustc 1.93.0-nightly (83e49b75e 2025-12-03)
binary: rustc
commit-hash: 83e49b75e7daf827e4390ae0ccbcb0d0e2c96493
commit-date: 2025-12-03
host: x86_64-unknown-linux-gnu
release: 1.93.0-nightly
LLVM version: 21.1.5

@rustbot modify labels: +regression-from-stable-to-nightly -regression-untriaged

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)C-bugCategory: This is a bug.E-needs-bisectionCall for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustcI-prioritizeIssue: Indicates that prioritization has been requested for this issue.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions