From: Steve Hancock Date: Mon, 27 Feb 2023 17:43:53 +0000 (-0800) Subject: fix c169 X-Git-Tag: 20230309~9 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c467a2e94858bea3b5974809f8d763b2b17ca839;p=perltidy.git fix c169 --- diff --git a/dev-bin/run_convergence_tests.pl.data b/dev-bin/run_convergence_tests.pl.data index d95eb88d..804e9538 100644 --- a/dev-bin/run_convergence_tests.pl.data +++ b/dev-bin/run_convergence_tests.pl.data @@ -18095,6 +18095,14 @@ s/^([^\t]*)(\t+)/$1.(" " x ((length($2)<<3)-(length($1)&7)))/e ) ==> c100.par <== # default settings +==> c169.in <== + eval "format OUT19 = \n" . '@<<<' . "\0\n" . '$v' . "\n" . '@<<<' . "\0\n" + . '$v' + . "\n.\n"; + +==> c169.par <== +# default settings + ==> c190.in <== # reverse sweep needs to look at '$saw_level_change' for these cases local($codeA) = "sub wrap_cmd_$cmd {" . "\n" diff --git a/dev-bin/run_convergence_tests.pl.expect b/dev-bin/run_convergence_tests.pl.expect index 4d23105f..4b983994 100644 --- a/dev-bin/run_convergence_tests.pl.expect +++ b/dev-bin/run_convergence_tests.pl.expect @@ -11190,6 +11190,10 @@ s/^([^\t]*)(\t+)/$1.(" " x ((length($2)<<3)-(length($1)&7)))/e ) # Stable (note ';' before '#' ) eval { substr( $$textref, $_[4], $_[1] + $_[5] ) = $extra; }; # need to check for sort_map_grep_eval in starting_one_line_block +==> c169 <== + eval "format OUT19 = \n" . '@<<<' . "\0\n" . '$v' . "\n" . '@<<<' . "\0\n" + . '$v' . "\n.\n"; + ==> c190 <== # reverse sweep needs to look at '$saw_level_change' for these cases local ($codeA) diff --git a/lib/Perl/Tidy/Formatter.pm b/lib/Perl/Tidy/Formatter.pm index 24c59ef9..c782d158 100644 --- a/lib/Perl/Tidy/Formatter.pm +++ b/lib/Perl/Tidy/Formatter.pm @@ -19600,6 +19600,7 @@ EOM $summed_lengths_to_go[$ibeg_1]; my $summed_len_2 = $summed_lengths_to_go[ $iend_2 + 1 ] - $summed_lengths_to_go[$ibeg_2]; + return unless ( @@ -19626,8 +19627,18 @@ EOM $rOpts_short_concatenation_item_length # additional constraints to fix c167 - && ( $types_to_go[$iend_1] ne 'Q' - || $summed_len_2 < $summed_len_1 ) + && ( + $types_to_go[$iend_1] ne 'Q' + + # allow a term shorter than the previous term + || $summed_len_2 < $summed_len_1 + + # or allow a short semicolon-terminated term if this + # makes two lines (see c169) + || ( $n == 2 + && $n == $nmax + && $this_line_is_semicolon_terminated ) + ) ) ); }