|
@@ -67,11 +67,27 @@ sub generate_slave {
|
67
|
67
|
|
68
|
68
|
STEP: foreach my $master_step (@{ $self->{steps} }) {
|
69
|
69
|
my $accept = 1;
|
|
70
|
+ my $slave_step = {
|
|
71
|
+ line => $master_step->{line},
|
|
72
|
+ warnings => []
|
|
73
|
+ };
|
70
|
74
|
COND: foreach my $condstr (@{ $master_step->{conds} }) {
|
71
|
75
|
my $c = SugarTrail::Template::Condition->new($condstr);
|
72
|
|
- unless ($c->match($args)) { $accept = 0; last COND; }
|
|
76
|
+ my ($r, $w) = $c->match($args);
|
|
77
|
+
|
|
78
|
+ # if warnings, store them, prepare to accept and ignore result
|
|
79
|
+ if (scalar @$w) {
|
|
80
|
+ $accept = 1;
|
|
81
|
+ push @{$slave_step->{warnings}}, @$w;
|
|
82
|
+ next COND;
|
|
83
|
+ } else {
|
|
84
|
+ # point of no warnings -- refusal should be valid here
|
|
85
|
+ $accept = 0 unless $r;
|
|
86
|
+ }
|
73
|
87
|
}
|
74
|
|
- push @slave_steps, $master_step->{line} if $accept;
|
|
88
|
+
|
|
89
|
+ push @slave_steps, $slave_step
|
|
90
|
+ if ($accept || scalar @{$slave_step->{warnings}});
|
75
|
91
|
}
|
76
|
92
|
|
77
|
93
|
$slave->{meta}->{'Stm'} = $self->{stm};
|