From: Steve Hancock Date: Tue, 8 Sep 2020 22:08:02 +0000 (-0700) Subject: fixed rare problem with stored index values for -lp option X-Git-Tag: 20200907.01~31 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=4147c8c813aa6598668ba29eea5ea623f10f8490;p=perltidy.git fixed rare problem with stored index values for -lp option --- diff --git a/lib/Perl/Tidy/Formatter.pm b/lib/Perl/Tidy/Formatter.pm index 20f3fa5b..95434709 100644 --- a/lib/Perl/Tidy/Formatter.pm +++ b/lib/Perl/Tidy/Formatter.pm @@ -5141,6 +5141,14 @@ sub get_available_spaces_to_go { my $index = 0; if ( $level >= 0 ) { $index = ++$max_gnu_item_index; } + my $starting_index_K = 0; + if ( defined($line_start_index_to_go) + && $line_start_index_to_go >= 0 + && $line_start_index_to_go <= $max_index_to_go ) + { + $starting_index_K = $K_to_go[$line_start_index_to_go]; + } + my $item = Perl::Tidy::IndentationItem->new( spaces => $spaces, level => $level, @@ -5150,7 +5158,7 @@ sub get_available_spaces_to_go { gnu_sequence_number => $gnu_sequence_number, align_paren => $align_paren, stack_depth => $max_gnu_stack_index, - starting_index => $line_start_index_to_go, + starting_index_K => $starting_index_K, ); if ( $level >= 0 ) { @@ -14891,18 +14899,17 @@ sub pad_array_to_go { $item = $leading_spaces_to_go[ $i_opening + 2 ]; } if ( defined($item) ) { - my $i_start_2 = $item->get_starting_index(); + my $i_start_2; + my $K_start_2 = $item->get_starting_index_K(); + if ( defined($K_start_2) ) { + $i_start_2 = $K_start_2 - $K_to_go[0]; + } if ( defined($i_start_2) # we are breaking after an opening brace, paren, # so don't break before it too && $i_start_2 ne $i_opening - - # Defensive coding check: be sure the index is valid. - # FIXME: We should probably be using K indexes for 'starting_index' - # so that the object can remain valid between batches. - # See test problem: random_issues/random_487.pro && $i_start_2 >= 0 && $i_start_2 <= $max_index_to_go ) diff --git a/lib/Perl/Tidy/IndentationItem.pm b/lib/Perl/Tidy/IndentationItem.pm index d65591bd..d395f441 100644 --- a/lib/Perl/Tidy/IndentationItem.pm +++ b/lib/Perl/Tidy/IndentationItem.pm @@ -28,7 +28,7 @@ BEGIN { _align_paren_ => $i++, _marked_ => $i++, _stack_depth_ => $i++, - _starting_index_ => $i++, + _starting_index_K_ => $i++, _arrow_count_ => $i++, }; } @@ -47,7 +47,7 @@ sub new { my $gnu_sequence_number = $input_hash{gnu_sequence_number}; my $align_paren = $input_hash{align_paren}; my $stack_depth = $input_hash{stack_depth}; - my $starting_index = $input_hash{starting_index}; + my $starting_index_K = $input_hash{starting_index_K}; my $closed = -1; my $arrow_count = 0; @@ -74,7 +74,7 @@ sub new { # # with an opening structure? # marked => # if visited by corrector logic # stack_depth => # indentation nesting depth - # starting_index => # first token index of this level + # starting_index_K => # first token index K of this level # arrow_count => # how many =>'s my $self = []; @@ -91,7 +91,7 @@ sub new { $self->[_align_paren_] = $align_paren; $self->[_marked_] = $marked; $self->[_stack_depth_] = $stack_depth; - $self->[_starting_index_] = $starting_index; + $self->[_starting_index_K_] = $starting_index_K; $self->[_arrow_count_] = $arrow_count; bless $self, $class; @@ -225,9 +225,9 @@ sub get_index { return $self->[_index_]; } -sub get_starting_index { +sub get_starting_index_K { my $self = shift; - return $self->[_starting_index_]; + return $self->[_starting_index_K_]; } sub set_have_child {