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.
E3027A function whose return type is a closure. A closure value points into the frame that made it, so it cannot outlive that frame yet.