ludic/selfhost/check
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
..
check_call.ludic fix(check): a Math.* call has the type the emitter gives it 2026-09-28 14:12:28 +03:00
check_env.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
check_expr.ludic feat(base): 0.R4 - a queue keeps its own count, so every package verb takes only its own state; ludic migrate state --prune 2026-09-26 04:19:56 +03:00
check_gen.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
check_gen_call.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
check_index.ludic feat(lang): L5 generic records and functions 2026-09-24 02:21:15 +03:00
check_ops.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
check_state.ludic fix(migrate): 0.R5 - a state an argument to a C function comes out of keeps the mutability it was declared with, so --tighten leaves the mut on a wrapper writing through a native handle (phys_force) and does not add one to a query that reads through one 2026-09-27 04:23:11 +03:00
check_stmt.ludic fix(check): 0.R4 - a misspelled type in a parameter, a result or a field is refused where it is written 2026-09-26 05:58:35 +03:00
check_tynames.ludic fix(check): 0.R4 - a misspelled type in a parameter, a result or a field is refused where it is written 2026-09-26 05:58:35 +03:00
check_types.ludic feat(lang): L7 memory is safe unless it says unsafe 2026-09-24 12:53:27 +03:00
check_unsafe.ludic feat(lang): L7 memory is safe unless it says unsafe 2026-09-24 12:53:27 +03:00