Skip to content

Compliance: promoted public private(set) asymmetric visibility (#10001) - #10052

Merged
PurHur merged 1 commit into
masterfrom
agent/issue-10001-asymmetric-promoted-ctor
Jun 19, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/issue-10001-asymmetric-promoted-ctor

Conversation

@PurHur

@PurHur PurHur commented Jun 19, 2026

Copy link
Copy Markdown
Owner

Summary

Verification

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php vendor/bin/phpunit --filter asymmetric_promoted_ctor
php bin/vm.php test/repro/asymmetric_visibility_promoted_ctor.php
'

Output:

OK (2 tests, 2 assertions)  # VM + JIT compliance
alice
Cannot modify private(set) property User::$name from global scope

Inline repro (public private(set) int $x = 1, default overridden to 2):

2
Error: Cannot modify private(set) property C::$x from global scope

Test plan

  • phpunit --filter asymmetric_promoted_ctor (VM + JIT)
  • Issue repro read + private(set) write guard on VM/JIT

Made with Cursor

Behavior was already fixed via AsymmetricVisibilityRewriter and compile
checks (#9724, #6981); add the issue repro as a VM+JIT compliance case.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 0faa1c7 into master Jun 19, 2026
@PurHur
PurHur deleted the agent/issue-10001-asymmetric-promoted-ctor branch June 19, 2026 15:34
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: asymmetric visibility on constructor-promoted properties — parse fails (PHP 8.4, Zend/zend_compile.c)

1 participant