From: Steve Hancock Date: Tue, 21 Nov 2023 15:18:45 +0000 (-0800) Subject: fix b1462 X-Git-Tag: 20230912.06~20 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=8921c1d26e487b376286007e3d01d4b03068fe38;p=perltidy.git fix b1462 --- diff --git a/dev-bin/run_convergence_tests.pl.data b/dev-bin/run_convergence_tests.pl.data index 2b3d7b9d..19a63f3d 100644 --- a/dev-bin/run_convergence_tests.pl.data +++ b/dev-bin/run_convergence_tests.pl.data @@ -11831,6 +11831,32 @@ sub bubba { --want-break-before='=' --opening-anonymous-sub-brace-on-new-line +==> b1462.in <== +die sprintf( + "Usage: %s [ -r | -a | -f fmt ] file ...\n", + ( + $0=~ + m|.*/(.*)|o + ), + +); + +die sprintf( + "Usage: %s [ -r | -a | -f fmt ] file ...\n",( + $0=~ + m|.*/(.*)|o + ), + +); + +==> b1462.par <== +--maximum-line-length=50 +--indent-columns=7 +--noadd-whitespace +--extended-line-up-parentheses +--delete-old-whitespace +--opening-paren-right + ==> b148.in <== # state 1 @yydgoto=( diff --git a/dev-bin/run_convergence_tests.pl.expect b/dev-bin/run_convergence_tests.pl.expect index 03dd2581..acd951c5 100644 --- a/dev-bin/run_convergence_tests.pl.expect +++ b/dev-bin/run_convergence_tests.pl.expect @@ -8001,6 +8001,25 @@ sub bubba { $C_sigmas = sub { [ $a3::COMMON, $a3::Offset{lcount} + 47 ] }; +==> b1462 <== +die sprintf( + "Usage: %s [ -r | -a | -f fmt ] file ...\n", + ( + $0=~ + m|.*/(.*)|o + ), + +); + +die sprintf( + "Usage: %s [ -r | -a | -f fmt ] file ...\n", + ( + $0=~ + m|.*/(.*)|o + ), + +); + ==> b148 <== # state 1 @yydgoto=( diff --git a/lib/Perl/Tidy/Formatter.pm b/lib/Perl/Tidy/Formatter.pm index 834b4329..ce2ee8d1 100644 --- a/lib/Perl/Tidy/Formatter.pm +++ b/lib/Perl/Tidy/Formatter.pm @@ -32032,6 +32032,21 @@ sub set_vertical_tightness_flags { { my $spaces = ( $types_to_go[ $ibeg_next - 1 ] eq 'b' ) ? 1 : 0; + # Fix b1462 - avoid edge instability problem with -lp -naws: + # If the '(' started a different line, consider the newline + # to be a space. This is restricted to -lp for now but + # could be generalized if necessary. + if ( !$spaces + && $rOpts_line_up_parentheses + && !$rOpts_add_whitespace ) + { + my $Kend = $K_to_go[$iend]; + my $Kbeg_next = $K_to_go[$ibeg_next]; + my $ix_end = $self->[_rLL_]->[$Kend]->[_LINE_INDEX_]; + my $ix_beg_next = $self->[_rLL_]->[$Kbeg_next]->[_LINE_INDEX_]; + if ( $ix_end != $ix_beg_next ) { $spaces = 1 } + } + $vt_type = 2; $vt_opening_flag = 0; $vt_closing_flag = $spaces;