aboutsummaryrefslogtreecommitdiff
path: root/AGENTS/CONVENTIONS/CALLS.md
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-21 12:49:21 +0000
committer_ov4 <ov4@ov4.org>2026-10-21 12:49:21 +0000
commitbb1244aaef910579d829eb1563365479860ae7e1 (patch)
tree6e8a95fcbb3942907f5d7229b16a65d1e08dd462 /AGENTS/CONVENTIONS/CALLS.md
parent97f743a41925e4346aa2c08f23ba432072318eca (diff)
docs(agents): collapse duplicated passages into single-home links
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'AGENTS/CONVENTIONS/CALLS.md')
-rw-r--r--AGENTS/CONVENTIONS/CALLS.md12
1 files changed, 6 insertions, 6 deletions
diff --git a/AGENTS/CONVENTIONS/CALLS.md b/AGENTS/CONVENTIONS/CALLS.md
index 261b06f..1942ded 100644
--- a/AGENTS/CONVENTIONS/CALLS.md
+++ b/AGENTS/CONVENTIONS/CALLS.md
@@ -23,13 +23,13 @@ bridge C void* and nominal pseudocode pointer types.
invoke a same-class BYREF OVERLOAD NEW when defined; STRING-bearing aggregates
clone their owned fields. Other classes without a copy constructor copy bits; class
rvalues transfer ownership. Other values use `emitCoercedExpr`.
-- Top-level prototypes are pre-registered (after the TYPE pre-pass) before statement
- emission, so call-before-definition is fine; a call with no registered signature is
- a compile error. Method prototypes are pre-registered too.
+- Top-level prototypes are pre-registered at the start of `compile()` (after the TYPE
+ pre-pass) before statement emission, so call-before-definition is fine; a call with
+ no registered signature is a compile error (no extern is fabricated). Method
+ prototypes are pre-registered too.
- OVERLOAD signatures append canonical parameter types to the link name; ordinary
- names except MAIN get no mangling. `getOverloads` filters by visibility and
- `resolveCall` selects exact static types/ranks. Return types, modes and bounds
- never distinguish overloads.
+ names except MAIN get no mangling. Overload sets, visibility filtering and exact
+ selection: [SUBSYSTEMS/FUNCTIONS.md](../SUBSYSTEMS/FUNCTIONS.md#signatures-and-call-resolution).
- In all cases, `emitPrototype` rejects names that collide with runtime/libc symbols
(`isReservedRuntimeName`), builtins, or enum values. Signatures retain the first
declaration spelling for LLVM lookup, independently of call-site casing.