-
-
Notifications
You must be signed in to change notification settings - Fork 135
Description
When prettier-php has a comment directly after <php, it reformats the comment on each successive run, resulting in strange behaviour. The most bizarre is copying the line on each successive run of prettier.
note: By stable, I mean the second time you run prettier, it doesn't change the files. If there's a better word for this, I'm happy to change my description.
This bug is captured in a comment on another issue. However, due to this bug breaking a core properties of prettier, stable transformations, I think it's worth its own issue.
similar bugs:
- Bug with mixture of php with comments and html #2419 - does not have the unstable element
- Issue in conditions followed by comments #2380 - similar, but does not have the unstable element
Prettier 3.5.3
PHP Plugin 0.22.4
# Options (if any): None
module.exports = {
plugins: ["@prettier/plugin-php"],
};Example 1
Input:
<?php
/**
* The template for displaying the footer
*/
?>
<div class="footer">
<?php
// Footer
get_template_part("template-parts/footer", "2022"); ?>
</div>
<?php wp_footer(); ?>Output run 1:
<?php
/**
* The template for displaying the footer
*/
?>
<div class="footer">
<?php // Footer
get_template_part("template-parts/footer", "2022"); ?>
</div>
<?php wp_footer(); ?>Output run 2:
<?php
/**
* The template for displaying the footer
*/
?>
<div class="footer">
<?php // Footer
// Footer
get_template_part("template-parts/footer", "2022"); ?>
</div>
<?php wp_footer(); ?>Output run 3: each successive run adds a new line with // Footer
Example 2
Input:
</main><!-- #main -->
</div><!-- #primary -->
<?php
// get_sidebar();
get_footer();Output run 1:
</main><!-- #main -->
</div><!-- #primary -->
<?php // get_sidebar();
get_footer();Output run 2:
</main><!-- #main -->
</div><!-- #primary -->
<?php // get_sidebar();
get_footer();Example 3
Input:
<header class="page-header">
<h1 class="page-title">
<?php
/* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->Output run 1:
<header class="page-header">
<h1 class="page-title">
<?php /* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->Output run 2:
<header class="page-header">
<h1 class="page-title">
/* translators: %s: search query. */<?php
/* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->Output run 3:
<header class="page-header">
<h1 class="page-title">
/* translators: %s: search query. */ /* translators: %s: search query. */<?php
/* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->cc: @movva-gpu