==> c100.par <==
# default settings
+
+==> c190.in <==
+ # reverse sweep needs to look at '$saw_level_change' for these cases
+ local($codeA) = "sub wrap_cmd_$cmd {" . "\n"
+ .'local($cmd, $_) = @_; local ($args, $dummy, $pat) = "";'
+ . $bodyA
+ . (($thisone)? "\nprint \"\\nwrap $cmd:\".\$args.\"\\n\";" : '')
+ . "\n".'(&make_deferred_wrapper(1).$cmd.'
+ . "\"$padding\"".'.$args.&make_deferred_wrapper(0),$_)}'
+ . "\n";
+
+ local($codeA) = "sub wrap_cmd_$cmd {" . "\n"
+ .'local($cmd, $_) = @_; local ($args, $dummy, $pat) = "";'
+ . $bodyA
+ . (($thisone)? "\nprint \"\\nwrap $cmd:\".\$args.\"\\n\";" : '')
+ . "\n".'(&make_deferred_wrapper(1).$cmd.'
+ . "\"$padding\"".'.$args.&make_deferred_wrapper(0),$_)}'
+ . "\n";
+
+==> c190.par <==
+-pbp -nst -nse -wn -xci -conv -fso -gcs -maxue=3
# Stable (note ';' before '#' )
eval { substr( $$textref, $_[4], $_[1] + $_[5] ) = $extra; }; # need to check for sort_map_grep_eval in starting_one_line_block
+
+==> c190 <==
+ # reverse sweep needs to look at '$saw_level_change' for these cases
+ local ($codeA)
+ = "sub wrap_cmd_$cmd {" . "\n"
+ . 'local($cmd, $_) = @_; local ($args, $dummy, $pat) = "";'
+ . $bodyA
+ . ( ($thisone)
+ ? "\nprint \"\\nwrap $cmd:\".\$args.\"\\n\";"
+ : ''
+ )
+ . "\n"
+ . '(&make_deferred_wrapper(1).$cmd.'
+ . "\"$padding\""
+ . '.$args.&make_deferred_wrapper(0),$_)}' . "\n";
+
+ local ($codeA)
+ = "sub wrap_cmd_$cmd {" . "\n"
+ . 'local($cmd, $_) = @_; local ($args, $dummy, $pat) = "";'
+ . $bodyA
+ . ( ($thisone)
+ ? "\nprint \"\\nwrap $cmd:\".\$args.\"\\n\";"
+ : ''
+ )
+ . "\n"
+ . '(&make_deferred_wrapper(1).$cmd.'
+ . "\"$padding\""
+ . '.$args.&make_deferred_wrapper(0),$_)}' . "\n";
# loop over all line pairs
#-------------------------
my $incomplete_loop;
+ my $saw_level_diff = 0;
for my $iter ( $nstart .. $nstop ) {
my $n = $iter;
my $type_ibeg_1 = $types_to_go[$ibeg_1];
my $type_ibeg_2 = $types_to_go[$ibeg_2];
+ $saw_level_diff ||=
+ $levels_to_go[$ibeg_1] != $levels_to_go[$ibeg_2];
+
# terminal token of line 2 if any side comment is ignored:
my $iend_2t = $iend_2;
my $type_iend_2t = $type_iend_2;
if ( $dbs > 0 ) {
# We will accept this joint but turn off
- # optimization; it can restart again if possible.
+ # optimization; it will restart again if possible.
$optimization_on = 0;
$reverse = 0;
}
# Look for pattern 2:
# - we are joining at the last possible joint, and
# - the strength values increase montonically with $n
- elsif ( $n_best == $nbs_max && $dbs_min > 0 ) {
+ # - we did not see a level change (test case c190)
+ elsif ($n_best == $nbs_max
+ && $dbs_min > 0
+ && !$saw_level_diff )
+ {
if (OPTIMIZED_REVERSE_SEARCH) {
DEBUG_RECOMBINE > 1
&& print STDERR