diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-22 15:15:20 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-22 15:21:14 +0000 |
| commit | 5a5a14be5e2683a42906da4b2ad19690e230c871 (patch) | |
| tree | 2b039a41a7ffe9ed193f88218e94d324c9fa43fd /AGENTS | |
| parent | 64622b737f070b377fdef3fb31a67c084457bd7b (diff) | |
feat(codegen): short-circuit AND and OR
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'AGENTS')
| -rw-r--r-- | AGENTS/CONVENTIONS/TYPES.md | 1 |
1 files changed, 1 insertions, 0 deletions
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 |
