From e782898e420c7f2abd83b97c160194d0e70598dd Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 05:27:14 +0000 Subject: feat(calls): support standalone calls and void pointer casts Co-Authored-By: Claude Fable 5.1 --- AGENTS/CONVENTIONS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'AGENTS') diff --git a/AGENTS/CONVENTIONS.md b/AGENTS/CONVENTIONS.md index d1454e6..bb1b836 100644 --- a/AGENTS/CONVENTIONS.md +++ b/AGENTS/CONVENTIONS.md @@ -131,7 +131,9 @@ The parser drops a failed statement and resyncs at the next token that can start a statement or end a block (`syncToStatementStart`), then continues; the failure is always diagnosed and reflected in the exit code. -**Calls dispatch on the declared signature.** `FunctionGen::emitPrototype` records every +**Calls share one dispatch path.** `CodeGen::emitCall` handles expression calls, CALL statements and bare `name(args)` statements; statement calls discard results. Explicit casts may bridge C void* and nominal pseudocode pointer types. + +**User calls dispatch on the declared signature.** `FunctionGen::emitPrototype` records every function's pseudocode signature (`FuncSig`: return type name + per-param `ParamSig` {type name, mode, array rank/bounds}); `CodeGen::marshalCallArgs` — the single call-marshalling path for both call-expr and call-stmt — requires BYREF arguments to be -- cgit v1.3.1-4-g156e