SD0041
Core code
unsupported operation on f64 operands
The registry text and every compiler message on these pages are the compiler's own English.
In the front end
A "use typeshade" file never reaches this check with the same mistake: the front end refuses it first, under its own code. This program, compiled at build time, gets:
"use typeshade"
class Uniforms { m: mat3<f64>}
declare const u: uniform<Uniforms>
@fragmentexport function main(@location(0) uv: vec2): vec4 { const k = u.m + u.m return vec4(uv, 0., 1.)}TS8003 error, line 11: Cannot + mat3x3<f64>: the fp64 pass lowers only * and transpose on a matrix of doubles. Declare the matrix mat3x3 where you need +.
How to fix it
The registry's hint: only + - * / compare, abs, min, max, sqrt, mix, floor, fract, round, sin, cos (and on vectors dot, length, distance, normalize) are emulated — narrow explicitly first: f32(x) on a scalar and vecN(v) on a vector in a "use typeshade" program, toF32(x) in the fn() EDSL
See also
-
TS8003TYPE_MISMATCH - Two types that do not fit where they meet (an operator, a condition, a declaration, a return or an argument), or a constant the compiler folds that WGSL refuses: a shift amount past 31, a divisor of 0, clamp bounds that cross or an f32 past its range.
Source
Where the compiler raises this code at commit 26de7be8, one line per file:
-
src/core/ir/node.ts:222(3 sites) -
src/core/passes/fp64-lower.ts:183(21 sites)