ludic/selfhost
Orkuncakilkaya 8e113f749a fix(check): a Math.* call has the type the emitter gives it
Math.max, Math.sqrt and the rest (and the bare min/max/abs/clamp) are computed inline by the
emitter, and L4 gave each the unknown type, which agrees with everything: Maroon Lake's trail
put Math.max(5, n) into Notify's string field a1 and it failed in LLVM ("%t63 defined with type
i32 but expected ptr"). It was never about two dispatches on a line - one is enough. The checker
now mirrors the emitter: a float/double first argument gives that type (sign an int); otherwise
min/max/abs/clamp keep the first argument's type, sign/floor/ceil/round/posmod/wrap/ping_pong are
ints, the rest fixed. Named arguments or an argument it cannot type leave it unknown.

rejected/math_into_text is the case. Reseeded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 14:12:28 +03:00
..
backend Os.heap_bytes: the heap without the renderer; string_temps reads it 2026-09-28 12:31:42 +03:00
check fix(check): a Math.* call has the type the emitter gives it 2026-09-28 14:12:28 +03:00
frontend Merge commit 'f104995' into lang/ecs 2026-09-28 02:02:11 +03:00
golden chore(repo): DX cleanup — categorise examples, text-diffable golden, build/ output (#27 #28 #30) 2026-08-30 18:54:21 +03:00
support feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
tests fix(compiler): == / != on references is identity; only text compares by content 2026-09-16 16:13:31 +03:00
ludicc.seed.ll fix(check): a Math.* call has the type the emitter gives it 2026-09-28 14:12:28 +03:00
ludicc.win.seed.ll fix(check): a Math.* call has the type the emitter gives it 2026-09-28 14:12:28 +03:00
main.ludic merge lang/foundations into lang/native-jolt (seeds regenerated) 2026-09-27 03:20:44 +03:00