From: Steve Hancock Date: Fri, 3 Feb 2023 21:53:25 +0000 (-0800) Subject: fix b1449 X-Git-Tag: 20230309~43 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c67c5e43d81992d7bd9c608c97299029985e721b;p=perltidy.git fix b1449 --- diff --git a/dev-bin/run_convergence_tests.pl.data b/dev-bin/run_convergence_tests.pl.data index 4cf3b29b..8e13eeac 100644 --- a/dev-bin/run_convergence_tests.pl.data +++ b/dev-bin/run_convergence_tests.pl.data @@ -11425,6 +11425,22 @@ $last = after ( --indent-columns=7 --paren-vertical-tightness-closing=1 +==> b1449.in <== + return wantarray + ? map $_->(), + @data + : ( defined(wantarray) ? sub { $_[0] } : sub { print $_[0] } ) + ->( join( "\n", map $_->(), @data ) . "\n" ); + + return wantarray + ? map $_->(), @data + : ( defined(wantarray) ? sub { $_[0] } : sub { print $_[0] } ) + ->( join( "\n", map $_->(), @data ) . "\n" ); + + +==> b1449.par <== +--nobreak-at-old-ternary-breakpoints + ==> b146.in <== # State 1 diff --git a/dev-bin/run_convergence_tests.pl.expect b/dev-bin/run_convergence_tests.pl.expect index 74d83d00..c5544c99 100644 --- a/dev-bin/run_convergence_tests.pl.expect +++ b/dev-bin/run_convergence_tests.pl.expect @@ -7750,6 +7750,20 @@ $last = after ( ); +==> b1449 <== + return wantarray + ? map $_->(), + @data + : ( defined(wantarray) ? sub { $_[0] } : sub { print $_[0] } ) + ->( join( "\n", map $_->(), @data ) . "\n" ); + + return wantarray + ? map $_->(), + @data + : ( defined(wantarray) ? sub { $_[0] } : sub { print $_[0] } ) + ->( join( "\n", map $_->(), @data ) . "\n" ); + + ==> b146 <== # State 1 diff --git a/lib/Perl/Tidy/Formatter.pm b/lib/Perl/Tidy/Formatter.pm index bfc8818a..ee11a84f 100644 --- a/lib/Perl/Tidy/Formatter.pm +++ b/lib/Perl/Tidy/Formatter.pm @@ -21282,7 +21282,22 @@ EOM # Switched from excluded to included for b1214. If necessary # the token could also be checked if type_m eq 'k' if ( $is_uncontained_comma_break_included_type{$type_m} ) { - $self->set_forced_breakpoint($ibreak); + + # Rule added to fix b1449: + # Do not break before a '?' if -nbot is set + # Otherwise, we may alternately arrive here and + # set the break, or not, depending on the input. + my $no_break; + my $ibreak_p = $inext_to_go[$ibreak_m]; + if ( !$rOpts_break_at_old_ternary_breakpoints + && $ibreak_p <= $max_index_to_go ) + { + my $type_p = $types_to_go[$ibreak_p]; + $no_break = $type_p eq '?'; + } + + $self->set_forced_breakpoint($ibreak) + if ( !$no_break ); } } }