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,
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 ) {
$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
)
_align_paren_ => $i++,
_marked_ => $i++,
_stack_depth_ => $i++,
- _starting_index_ => $i++,
+ _starting_index_K_ => $i++,
_arrow_count_ => $i++,
};
}
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;
# # 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 = [];
$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;
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 {