Repository navigation
fix: keep adjacent php blocks separate when there is no text between them - #2546
Open
Dextheking1 wants to merge 5 commits into
Open
Dextheking1 wants to merge 5 commits into
Dextheking1 wants to merge 5 commits into
Conversation
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.
Fixes #2022
<?= $var1 ?><?= $var2 ?>came out as one merged block:That does not parse. Same for any blocks with nothing between them:
<?php $a = 1; ?><?= $b ?>,X<?= $a ?><?php $b = 1; ?>, and a short echo inside an alternate syntax body.The parser already inserts the pseudo inline placeholder between blocks split by a newline. This adds the same for directly adjacent blocks, so the printer sees the boundary and keeps the tags.
Verified: new fixtures in tests/echo-adjacent round-trip unchanged. Full suite passes (602 tests), AST_COMPARE=1 passes (1186 tests), no other snapshot changes.
One trade-off, same as the existing newline case: a string containing a literal
?><?=gets the placeholder inserted before parsing. #2530 takes it back out of string output.