Skip to content

casting in a static breaks type inference #17756

Closed
@porglezomp

Description

@porglezomp

Writing the following works perfectly:

static count : uint = 2;
fn main() {
    let larger : [uint, ..count*2];
}

While the following:

static count : uint = 2 as uint;
fn main() {
    let larger : [uint, ..count*2];
}

Fails with error: expected constant expr for vector length: can't do this op on a uint and int. This looks like a problem with the type inference, and using 2u fixes this example, but breaks the one that previously worked.
When the array is being initialized rather than having the type set:

let larger = [0u, ..count*2];

The error is a much more cryptic error: expected constant integer for repeat count, found variable, and which one fails can again be swapped by multiplying by 2u instead of 2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions