aboutsummaryrefslogtreecommitdiff
path: root/AGENTS
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-22 15:15:20 +0000
committer_ov4 <ov4@ov4.org>2026-10-22 15:21:14 +0000
commit5a5a14be5e2683a42906da4b2ad19690e230c871 (patch)
tree2b039a41a7ffe9ed193f88218e94d324c9fa43fd /AGENTS
parent64622b737f070b377fdef3fb31a67c084457bd7b (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.md1
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