]> git.donarmstrong.com Git - perltidy.git/commitdiff
fix b1471
authorSteve Hancock <perltidy@users.sourceforge.net>
Thu, 16 May 2024 20:31:59 +0000 (13:31 -0700)
committerSteve Hancock <perltidy@users.sourceforge.net>
Thu, 16 May 2024 20:31:59 +0000 (13:31 -0700)
dev-bin/run_convergence_tests.pl.data
dev-bin/run_convergence_tests.pl.expect
lib/Perl/Tidy/Formatter.pm

index f795902f3266a56164bb824d505f3fcd5f0471b4..93ded12d8e0e4682aabee758480fd5c6a021fda3 100644 (file)
@@ -12101,6 +12101,22 @@ my @outer = (
 --break-before-paren=2
 --opening-square-bracket-right
 
+==> b1471.in <==
+my @global_ops = (
+    { "|" => sub { $_[0] unless $_[1]; } },
+    { "&" => sub { ( $_[0] && $_[1] ) ? $_[0] : 0; }, },
+);
+
+my @global_ops = (
+    { "|" => sub { $_[0] unless $_[1]; }, },
+    { "&" => sub { ( $_[0] && $_[1] ) ? $_[0] : 0; } },
+);
+
+==> b1471.par <==
+--add-trailing-commas
+--want-trailing-commas='*'
+--delete-weld-interfering-commas
+
 ==> b148.in <==
 # state 1
 @yydgoto=(
index 2b3ab805566518fab2330d50248436c72fdbda2e..0b4be4940b6d4d11dcb6dfa1d45e1d9e57ae1490 100644 (file)
@@ -8211,6 +8211,17 @@ my @outer =
          ],
         );
 
+==> b1471 <==
+my @global_ops = (
+    { "|" => sub { $_[0] unless $_[1]; } },
+    { "&" => sub { ( $_[0] && $_[1] ) ? $_[0] : 0; } },
+);
+
+my @global_ops = (
+    { "|" => sub { $_[0] unless $_[1]; } },
+    { "&" => sub { ( $_[0] && $_[1] ) ? $_[0] : 0; } },
+);
+
 ==> b148 <==
 # state 1
 @yydgoto=(
index e14380cc60be9b72665504c768d905e93e59c7e1..2d95f03cd22b88b0a14a49c8bb30b23820b9f610 100644 (file)
@@ -12419,6 +12419,28 @@ sub match_trailing_comma_rule {
     my $K_opening = $self->[_K_opening_container_]->{$type_sequence};
     return if ( !defined($K_opening) );
 
+    # Do not add a comma which will be deleted by
+    # --delete-weld-interfering commas (b1471)
+    if (   $if_add
+        && $rOpts_delete_weld_interfering_commas
+        && !$comma_count
+        && $is_closing_type{$last_nonblank_code_type} )
+    {
+        # Back up to the previous token
+        my $Kpp = $self->K_previous_nonblank( undef, $rLL_new );
+        if ( defined($Kpp) ) {
+            my $seqno_pp = $rLL_new->[$Kpp]->[_TYPE_SEQUENCE_];
+            my $type_pp  = $rLL_new->[$Kpp]->[_TYPE_];
+
+            # The containers would have to be nesting, so
+            # sequence numbers must differ by 1
+            return
+              if ( $seqno_pp
+                && $is_closing_type{$type_pp}
+                && ( $seqno_pp == $type_sequence + 1 ) );
+        }
+    }
+
     # multiline definition 1: opening and closing tokens on different lines
     my $iline_o                  = $rLL_new->[$K_opening]->[_LINE_INDEX_];
     my $iline_c                  = $rLL->[$KK]->[_LINE_INDEX_];