Repository navigation
Explain dead ends in failing state transitions - #412
Open
CatarinaGamboa wants to merge 1 commit into
Open
CatarinaGamboa wants to merge 1 commit into
CatarinaGamboa wants to merge 1 commit into
Conversation
When no sequence of calls leads to a state that allows the failing call, the error says so and suggests the constructors that create the object in such a state, or, if the object can be in several states depending on the path taken, asks for the same state on every path. When no call is allowed in the object's state, the error says it is a final state. These claims are only made when the state machine models every state-changing method of the class and of its super and subclasses. Co-Authored-By: Claude Opus 5.5 <[email protected]>
3 tasks done
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.
Stacked on #411.
Description
When no call can fix a failing state transition, the error now says why:
if), and no single sequence of calls works for all of them.These hints claim that something is impossible, so they are only given when the machine is complete. That means every state-changing method of the class is modeled, and no superclass or subclass has state refinements of its own. When nothing is known about the state, these hints are not given; the next PR handles that case.
StateMachineBuildernow also records the states each constructor creates, when they only depend on the state ofthis.Example
Type of change
Checklist
ErrorStateHintFinalStateandErrorStateHintPathDependent.ErrorStateHintIncomplete(a transition depends on an argument) andErrorStateHintSubclass(a subclass adds a transition) get no dead-end claim.ErrorStateHintSeveralRefinementsnow gets the path-dependent hint.mvn testpasses locally🤖 Generated with Claude Code