zend_ast: Surround function by parens when exporting calls to function stored in property#22376
Open
TimWolla wants to merge 1 commit into
Open
zend_ast: Surround function by parens when exporting calls to function stored in property#22376TimWolla wants to merge 1 commit into
TimWolla wants to merge 1 commit into
Conversation
…n stored in property The extra parentheses are needed to disambiguate method calls from calls to a function stored in a property. Fixes php#22373.
iliaal
reviewed
Jun 21, 2026
| case ZEND_AST_CALL: { | ||
| zend_ast *left = ast->child[0]; | ||
| if (left->kind == ZEND_AST_ARROW_FUNC || left->kind == ZEND_AST_CLOSURE) { | ||
| if (left->kind == ZEND_AST_ARROW_FUNC || left->kind == ZEND_AST_CLOSURE || left->kind == ZEND_AST_PROP) { |
Contributor
There was a problem hiding this comment.
This only covers ZEND_AST_PROP. ZEND_AST_NULLSAFE_PROP and ZEND_AST_STATIC_PROP callees drop their parens the same way: ($o?->f)() exports as $o?->f() (nullsafe method call) and (C::$sf)() as C::$sf() (variable static method call), neither of which round-trips. Worth folding both into the condition and the test.
Member
Author
There was a problem hiding this comment.
Good points, thank you. Perhaps it makes sense to invert the condition: Always add parens, unless it's known to be a bare identifier.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The extra parentheses are needed to disambiguate method calls from calls to a function stored in a property.
Fixes #22373.