Skip to content

Language: Variadic functions (...$args) and func_get_args() #197

@PurHur

Description

@PurHur

Problem

compileParam() asserts assert(false === $param->variadic). Wrapper functions and routers need function route(string $path, ...$handlers).

Goal

Support PHP variadic parameters and minimal introspection.

Tasks

  • Remove variadic assert; pack extra args into array at call boundary
  • VM: TYPE_ARG_RECV for variadic slot receives packed array
  • func_get_args() / func_num_args() builtins (VM first)
  • JIT: pack trailing args (may call VM helper initially)
  • PHPT with spread at call site (Language: Spread operator (...) in arrays and calls #141 related)

Acceptance criteria

function sum(...$nums) { $t=0; foreach ($nums as $n) $t+=$n; return $t; }
echo sum(1,2,3); // 6

Requires #53 foreach or indexed loop fallback.

Dependencies

Files

  • lib/Compiler.php, lib/VM.php, ext/standard/

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions