Refactor step buttons + improve assertion messages #6418
Merged
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.
I got annoyed with totally useless test failure messages and having to follow the steps to the failures.
A few important changes here:
StepButton
constructors except where required (UntilStepButton
,RepeatStepButton
) to preserve behaviour. They now use properties includingrequired
and{ get; init; }
keywords to indicate expected uses.ToggleStepButton
missing theisSetupStep
param. It feels like the contracts were too loose being optional ctor params.UntilStepButton
now has a callstack similar toAssertButton
.AddStep
andAddLabelStep
no longer return the step button. It's not used in o!f and osu!, and I'm not sure what practice use it could ever have.AddUntilStep
) calls theAddStep(StepButton)
method which does the schedule + add to container. In particular, this is important for generating correct callstacks as they're currently generated inside the lambda and lose context. This is why our traces are terrible.If deemed necessary, I can split this PR up into two. I kinda went down the rabbit hole to see where it ends, so it combines the refactoring.
Demo:
Before:
After: