From 8921c1d26e487b376286007e3d01d4b03068fe38 Mon Sep 17 00:00:00 2001 From: Steve Hancock Date: Tue, 21 Nov 2023 07:18:45 -0800 Subject: [PATCH] fix b1462 --- dev-bin/run_convergence_tests.pl.data | 26 +++++++++++++++++++++++++ dev-bin/run_convergence_tests.pl.expect | 19 ++++++++++++++++++ lib/Perl/Tidy/Formatter.pm | 15 ++++++++++++++ 3 files changed, 60 insertions(+) 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; -- 2.39.5