gen_stub: fix union/intersection types with namespaced classes and support use statements#21717
Open
GromNaN wants to merge 2 commits intophp:masterfrom
Open
gen_stub: fix union/intersection types with namespaced classes and support use statements#21717GromNaN wants to merge 2 commits intophp:masterfrom
GromNaN wants to merge 2 commits intophp:masterfrom
Conversation
…ntersection type list When generating a union or intersection type list with multiple class types, the variable holding each zend_string* was declared using toVarEscapedName() (backslashes replaced by underscores), but the subsequent ZEND_TYPE_INIT_CLASS() reference used toEscapedName() (backslashes escaped as \\), producing an invalid C identifier.
Stmt\Use_ and Stmt\GroupUse nodes were not handled in handleStatements(), causing an "Unexpected node" exception when use statements appeared in stub files. Since NameResolver resolves all names to their fully qualified form before handleStatements() runs, these nodes can simply be skipped.
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.
Two fixes for
build/gen_stub.php:Fix 1: When generating a type list for union/intersection types with multiple class names, the
zend_string*variable was declared withtoVarEscapedName()(backslashes to underscores) but referenced withtoEscapedName()(backslashes to\\), producing an invalid C identifier.Fix 2:
useanduse groupstatements in stub files caused an"Unexpected node Stmt_Use"exception. SinceNameResolveralready resolves names to fully qualified form before parsing, these nodes can simply be skipped.