The `ActorJoin` transition was previously
labeled as independent with all other
transitions, including those of the actor
upon which the join acted. However, this
assumption was faulty: the join action is
instead dependent with ANY transition executed
by the actor joined upon, as the action
BECOMES enabled only as soon as the last action
run by the actor is executed.
}
bool ActorJoinTransition::depends(const Transition* other) const
{
- // Joining is indep with any other transitions:
+ // Joining is dependent with any transition whose
+ // actor is that of the `other` action. , Join i
+ if (other->aid_ == target_) {
+ return true;
+ }
+
+ // Otherwise, joining is indep with any other transitions:
// - It is only enabled once the target ends, and after this point it's enabled no matter what
// - Other joins don't affect it, and it does not impact on the enabledness of any other transition
return false;