Skip to content

Language: list destructuring with spread — VM parity (#4835) - #4843

Merged
PurHur merged 1 commit into
masterfrom
agent/issue-4835-list-destructuring-spread
Jun 3, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/issue-4835-list-destructuring-spread

Conversation

@PurHur

@PurHur PurHur commented Jun 3, 2026

Copy link
Copy Markdown
Owner

Summary

Closes #4835

php-src reference

  • Zend/zend_compile.c — list assignment with unpack
  • Zend/zend_execute.c — list unpack runtime

Verification

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && php bin/vm.php test/repro/list_destructuring_spread_4835.php'

Output:

1:2,3,4
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && vendor/bin/phpunit --filter list_destructuring_spread'

Output:

OK (1 test, 1 assertion)

Made with Cursor

Teach php-cfg parseListAssignment to honor unpack arms, lower
TYPE_LIST_SPREAD_ASSIGN for the tail, and slice the list RHS in the VM.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit bcfd6b3 into master Jun 3, 2026
@PurHur
PurHur deleted the agent/issue-4835-list-destructuring-spread branch June 3, 2026 04:23
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: list destructuring with spread — [$a, ...$rest] = $arr (zend_compile.c)

1 participant