Fix GH-10497: Allow const obj->prop = value #20903
Open
+64
−10
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes #10497 - Allows direct modification of object properties stored in constants.
Problem
Previously, this code would fail with a fatal error:
Solution
Modified the compiler to properly handle ZEND_AST_CONST in variable compilation contexts:
Constants now emit IS_VAR instead of IS_TMP_VAR when used in write contexts
This allows property assignment opcodes to work correctly with constant objects
Tests:
Behavior
Now supports all property operations on constant objects:
The constant reference remains immutable, but the object itself is mutable as expected.