E3001

E3001 — Type mismatch in variable declaration

What the compiler reports

E3001{{.*}}'v' is declared Verified<Tensor<f32, [16, 32]>> but its initializer is Tensor<f32, [16, 32]>

The fragments the test suite holds the compiler to. An ellipsis marks text the test does not constrain; the emitted message also carries a source location.

A program that triggers it

fn main() -> i32 {
  let t : Tensor<f32, [ 16, 32 ]> = Tensor<f32, [16, 32]>::uninit();
  // EXPECT: 'v' is declared Verified<Tensor<f32, [16, 32]>> but its initializer is Tensor<f32, [16, 32]>
  let v : Verified<Tensor<f32, [ 16, 32 ]>> = t;
  return 0;
}

From tests/frontend/fail/formal_verification_coercion_fail.vx, which asserts this diagnostic on every commit.

Related