package Perl::Tidy::IndentationItem;
use strict;
use warnings;
-our $VERSION = '20210717';
+our $VERSION = '20220613';
BEGIN {
# Array index names
+ # Do not combine with other BEGIN blocks (c101).
my $i = 0;
use constant {
_spaces_ => $i++,
_available_spaces_ => $i++,
_closed_ => $i++,
_comma_count_ => $i++,
- _sequence_number_ => $i++,
- _index_ => $i++,
+ _lp_item_index_ => $i++,
_have_child_ => $i++,
_recoverable_spaces_ => $i++,
- _align_paren_ => $i++,
+ _align_seqno_ => $i++,
_marked_ => $i++,
_stack_depth_ => $i++,
- _starting_index_K_ => $i++,
+ _K_begin_line_ => $i++,
_arrow_count_ => $i++,
+ _standard_spaces_ => $i++,
};
}
# # for this level
# closed => # index where we saw closing '}'
# comma_count => # how many commas at this level?
- # sequence_number => # output batch number
- # index => # index in output batch list
+ # lp_item_index => # index in output batch list
# have_child => # any dependents?
# recoverable_spaces => # how many spaces to the right
# # we would like to move to get
# # alignment (negative if left)
- # align_paren => # do we want to try to align
- # # with an opening structure?
+ # align_seqno => # if we are aligning with an opening structure,
+ # # this is its seqno
# marked => # if visited by corrector logic
# stack_depth => # indentation nesting depth
- # starting_index_K => # first token index K of this level
+ # K_begin_line => # first token index K of this level
# arrow_count => # how many =>'s
my $self = [];
$self->[_available_spaces_] = $input_hash{available_spaces};
$self->[_closed_] = -1;
$self->[_comma_count_] = 0;
- $self->[_sequence_number_] = $input_hash{gnu_sequence_number};
- $self->[_index_] = $input_hash{index};
+ $self->[_lp_item_index_] = $input_hash{lp_item_index};
$self->[_have_child_] = 0;
$self->[_recoverable_spaces_] = 0;
- $self->[_align_paren_] = $input_hash{align_paren};
+ $self->[_align_seqno_] = $input_hash{align_seqno};
$self->[_marked_] = 0;
$self->[_stack_depth_] = $input_hash{stack_depth};
- $self->[_starting_index_K_] = $input_hash{starting_index_K};
+ $self->[_K_begin_line_] = $input_hash{K_begin_line};
$self->[_arrow_count_] = 0;
+ $self->[_standard_spaces_] = $input_hash{standard_spaces};
bless $self, $class;
return $self;
( $available_spaces > $spaces_needed )
? $spaces_needed
: $available_spaces;
- $item->decrease_available_spaces($deleted_spaces);
+
+ # Fixed for c085; a zero value must remain unchanged unless the closed
+ # flag has been set.
+ my $closed = $item->get_closed();
+ $item->decrease_available_spaces($deleted_spaces)
+ unless ( $available_spaces == 0 && $closed < 0 );
$item->decrease_SPACES($deleted_spaces);
$item->set_recoverable_spaces(0);
return $_[0]->[_spaces_];
}
+sub get_standard_spaces {
+ return $_[0]->[_standard_spaces_];
+}
+
sub get_marked {
return $_[0]->[_marked_];
}
return $self->[_available_spaces_];
}
-sub get_align_paren {
- return $_[0]->[_align_paren_];
+sub get_align_seqno {
+ return $_[0]->[_align_seqno_];
}
sub get_recoverable_spaces {
return $_[0]->[_level_];
}
-sub get_sequence_number {
- return $_[0]->[_sequence_number_];
+sub get_spaces_level_ci {
+ my $self = shift;
+ return [ $self->[_spaces_], $self->[_level_], $self->[_ci_level_] ];
}
-sub get_index {
- return $_[0]->[_index_];
+sub get_lp_item_index {
+ return $_[0]->[_lp_item_index_];
}
-sub get_starting_index_K {
- return $_[0]->[_starting_index_K_];
+sub get_K_begin_line {
+ return $_[0]->[_K_begin_line_];
}
sub set_have_child {