E3026
E3026 — A placement query (.topology()) the checker cannot decide. Placement is a fact of the receiver's type, compared withSome(Topology::..)orNone; it has no run-time value.
What the compiler reports
E3026{{.*}}compare `.topology()` with `Some(Topology::..)` or `None`
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
//
// `x.topology()` is a fact of x's type, decided by the checker inside `== Some(Topology::..)`
// or `!= None`. Bound to a name it would need a run-time value, and nothing holds one.
fn main() -> i32 {
let g = spawn on(Topology::GPU) {
1
};
let where_is_it = g.topology();
return 0;
}
From tests/frontend/fail/placement_query_needs_a_comparison.vx, which asserts this diagnostic on every commit.
Related
A tour of VxThe chapter covering the rule this code enforces.
All diagnosticsEvery code the compiler can emit, grouped by stage.
E3025
extent(i) with an index that is not a literal below the tensor's rank. Rank is static, so the index is checked here rather than read past the descriptor at run time.
E3028A function with a non-void return type whose body can complete without returning. Reported here rather than left to codegen, where it surfaced as an MLIR verifier message naming an operation, with no source location.