Skip to content

Stdlib: array_udiff/uintersect enum case callbacks (#5637) - #8103

Merged
PurHur merged 1 commit into
masterfrom
agent/stdlib-array-udiff-enum-5637
Jun 12, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/stdlib-array-udiff-enum-5637

Conversation

@PurHur

@PurHur PurHur commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Summary

php-src reference

  • ext/standard/array.c — php_array_udiff, php_array_uintersect (user callback receives enum zvals)

Verification

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php test/repro-maintainer/parity_array_udiff_enum.php
php bin/vm.php test/repro-maintainer/parity_array_udiff_enum.php
php bin/jit.php test/repro-maintainer/parity_array_udiff_enum.php
vendor/bin/phpunit --filter array_udiff_enum
vendor/bin/phpunit --filter array_udiff_family
'

Output:

1
ok
true
1
ok
true
1
ok
true
OK (2 tests, 2 assertions)   # array_udiff_enum VM+JIT
OK (3 tests, 4 assertions) # array_udiff_family regression

Closes #5637

Made with Cursor

User-comparator array set ops must not apply rejectEnumCaseSetOpOperands;
Zend passes enum case objects to compare callbacks. Add compliance PHPT
and maintainer repro for VM/JIT parity.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 2fc3435 into master Jun 12, 2026
@PurHur
PurHur deleted the agent/stdlib-array-udiff-enum-5637 branch June 12, 2026 07:45
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.

Stdlib: array_udiff()/array_uintersect() callbacks must receive enum case objects (ext/standard/array.c)

1 participant