Skip to content

Fix json_encode enum repro/compliance — UnitEnum name clash (#6130) - #7801

Merged
PurHur merged 1 commit into
masterfrom
agent/runtime-php-json-encode-enum-6130
Jun 9, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/runtime-php-json-encode-enum-6130

Conversation

@PurHur

@PurHur PurHur commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Summary

PHP implementation (already on master)

  • ext/standard/VmJson.php::exportEnumCase() — unit "", backed scalar
  • lib/JIT/Builtin/StringJsonEncode.phpTYPE_ENUM_CASE branch

C runtime shrink

No new C; lib/AOT/runtime/ remains phpc_progress.c only.

Verification

docker info >/dev/null
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php test/repro-maintainer/parity_json_encode_enum.php
php bin/vm.php test/repro-maintainer/parity_json_encode_enum.php 2>/dev/null | tail -3
vendor/bin/phpunit --filter json_encode_enum
'

Output:

unit: 
backed_string: "x"
backed_int: 1
unit: ""
backed_string: "x"
backed_int: 1
OK (2 tests, 2 assertions)

Test plan

  • Maintainer repro Zend + VM side-by-side
  • json_encode_enum VM + JIT compliance filter

Made with Cursor

).

VmJson::export() already handles TYPE_ENUM_CASE on master; repro and PHPT
used enum UnitEnum which conflicts with PHP's built-in interface. Rename to
UE and add JIT compliance coverage.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 2a73bcb into master Jun 9, 2026
@PurHur
PurHur deleted the agent/runtime-php-json-encode-enum-6130 branch June 9, 2026 14:13
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: json_encode() — enum case operands must match Zend JSON output (ext/json/php_json.c)

1 participant