Make canAccept consider events handled by parent states (#128)#153
Open
amenski wants to merge 1 commit into
Open
Make canAccept consider events handled by parent states (#128)#153amenski wants to merge 1 commit into
amenski wants to merge 1 commit into
Conversation
While in a nested state, canAccept only checked the current state's own acceptable events and returned false for events handled by an ancestor state, even though internalFire delegates declined events up the parent chain. Walk the parent chain in canAccept, applying the same region and parallel-state boundary that internalFire uses.
87c7220 to
10f17b3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
While in a nested state,
AbstractStateMachine.canAcceptonly checked the current state's own acceptable events, returningfalsefor events handled by an ancestor state - even thoughinternalFiredelegates declined events up the parent chain.This walks the parent chain in
canAccept, applying the same region / parallel-state boundary thatinternalFireuses.Fixes #128.
Test plan
Issue128test - verified to fail on the original code and pass with the fix.