From: Steve Hancock Date: Sat, 29 Oct 2022 15:06:38 +0000 (-0700) Subject: fix b1409 X-Git-Tag: 20221112~19 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=5cf6e3b72bf79ab9a7e158932cfaa44c4fe4fcd0;p=perltidy.git fix b1409 --- diff --git a/dev-bin/run_convergence_tests.pl.data b/dev-bin/run_convergence_tests.pl.data index 24571afb..691bf301 100644 --- a/dev-bin/run_convergence_tests.pl.data +++ b/dev-bin/run_convergence_tests.pl.data @@ -10656,6 +10656,24 @@ my %MyTokens= ( --maximum-line-length=47 --want-trailing-commas='i' +==> b1409.in <== + local( + %cached_env_img,%id_map, + %symbolic_labels,%latex_labels + )if($FIXEDDIR&&$NO_SUBDIR); + + local(%cached_env_img,%id_map,%symbolic_labels, + %latex_labels,) + if($FIXEDDIR&&$NO_SUBDIR); + +==> b1409.par <== +--add-trailing-commas +--delete-trailing-commas +--want-trailing-commas='b' +--indent-columns=6 +--maximum-line-length=66 +--noadd-whitespace + ==> b146.in <== # State 1 diff --git a/lib/Perl/Tidy/Formatter.pm b/lib/Perl/Tidy/Formatter.pm index e07c6e80..b7381312 100644 --- a/lib/Perl/Tidy/Formatter.pm +++ b/lib/Perl/Tidy/Formatter.pm @@ -7845,8 +7845,19 @@ sub delete_trailing_comma { $self->match_trailing_comma_rule( $KK, $Kfirst, $Kp, $trailing_comma_rule, 0 ); - # If not, delete it + # Patch: the --noadd-whitespace flag can cause instability in complex + # structures. In this case do not delete the comma. Fixes b1409. + if ( !$match && !$rOpts_add_whitespace ) { + my $Kn = $self->K_next_nonblank($KK); + if ( defined($Kn) ) { + my $type_n = $rLL->[$Kn]->[_TYPE_]; + if ( $type_n ne ';' && $type_n ne '#' ) { return } + } + } + + # If no match, delete it if ( !$match ) { + return $self->unstore_last_nonblank_token(','); } return;