From 5a5a14be5e2683a42906da4b2ad19690e230c871 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Thu, 22 Oct 2026 15:15:20 +0000 Subject: feat(codegen): short-circuit AND and OR Co-Authored-By: Claude Sonnet 5.5 --- AGENTS/CONVENTIONS/TYPES.md | 1 + 1 file changed, 1 insertion(+) (limited to 'AGENTS') diff --git a/AGENTS/CONVENTIONS/TYPES.md b/AGENTS/CONVENTIONS/TYPES.md index f5764d4..7349ab1 100644 --- a/AGENTS/CONVENTIONS/TYPES.md +++ b/AGENTS/CONVENTIONS/TYPES.md @@ -30,6 +30,7 @@ rejects arithmetic on BOOLEAN/CHAR, AND/OR on non-BOOLEAN, and comparisons betwe different kinds (INTEGER with REAL is the only mixed pair); `emitCoercedExpr` allows only INTEGER->REAL between the four builtin scalars. REAL->INTEGER therefore errors (with an `INT(...)` hint); `INT` is a compiler builtin (`Builtins.h`, `CodeGen::emitIntBuiltin`) truncating toward zero with a range check. BOOLEAN (i1) and CHAR (i8) compare unsigned. C scalars keep C semantics. +AND/OR short-circuit (`CodeGen::emitShortCircuit`) unless a user overload applies. **User-kind typing is nominal, and checked upstream only.** Enum/Record/Pointer identity is case-insensitive name equality (`P1 = ^INTEGER` and `P2 = ^INTEGER` are -- cgit v1.3.1-4-g156e