Skip to content

Language: Default parameter values and optional arguments (#196)#232

Merged
PurHur merged 1 commit into
masterfrom
issue-196-default-params
May 18, 2026
Merged

Language: Default parameter values and optional arguments (#196)#232
PurHur merged 1 commit into
masterfrom
issue-196-default-params

Conversation

@PurHur
Copy link
Copy Markdown
Owner

@PurHur PurHur commented May 18, 2026

Summary

  • Implement optional function parameters in the VM by compiling defaultVar literals into TYPE_ARG_RECV and applying them when callers omit arguments.
  • Pad JIT Native calls with compile-time default values for omitted trailing parameters.
  • Add vendor patches (php-cfg-mixed-reserved, php-types-mixed-reserved) so untyped defaults work on PHP 8.2 where Mixed is a reserved class name.

Test plan

  • test/compliance/cases/language/default_params.phpt (VM)
  • test/compliance/cases/language/default_params_jit.phpt (JIT, requires LLVM)
  • Full VM compliance suite in Docker (phpunit test/compliance/VMTest.php)

Closes #196

Made with Cursor

Compile defaultVar literals into TYPE_ARG_RECV, apply them when callers omit
arguments, and pad JIT native calls with compile-time defaults. Add php-cfg/php-types
patches so untyped default parameters work on PHP 8.2 (Mixed reserved name).

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur PurHur merged commit f863501 into master May 18, 2026
@PurHur PurHur deleted the issue-196-default-params branch May 18, 2026 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Language: Default parameter values and optional arguments

1 participant