/** * Parser Extension: Function Parsing * Function calls, method calls, closure calls, and type operations */ import { Parser } from './parser.js'; import type { ClosureCallNode, ExpressionNode, HostCallNode, MethodCallNode, PipeInvokeNode, PostfixExprNode, SourceSpan, SpreadArgNode, TypeAssertionNode, TypeCheckNode } from '../types.js'; declare module './parser.js' { interface Parser { parseArgumentList(allowSpread?: boolean): (ExpressionNode | SpreadArgNode)[]; parseHostCall(): HostCallNode; parseClosureCall(): ClosureCallNode; parsePipeInvoke(): PipeInvokeNode; parseMethodCall(receiverSpan?: SourceSpan | null): MethodCallNode; parseTypeOperation(): TypeAssertionNode | TypeCheckNode; parsePostfixTypeOperation(operand: PostfixExprNode): TypeAssertionNode | TypeCheckNode; } } /** * Parse one argument in an argument list, handling spread when allowed. * Enforces max-one-spread per list via `hasSpread`, and rejects spread * entirely (RILL_P006) when `allowSpread` is false. Shared by * `parseArgumentList` (function/closure/pipe-invoke calls, where spread * support is caller-controlled) and `parseInvoke` (postfix invoke, where * spread is always allowed). */ export declare function parseSpreadOrArg(parser: Parser, options: { allowSpread: boolean; hasSpread: boolean; }): ExpressionNode | SpreadArgNode;