refactor(api): Make sure command implementations return something compatible with the command's result type #15051
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.
Overview
This is a step towards EXEC-427.
Every command declares a
result
type, e.gAspirate
hasAspirateResult
. But it turns out that nothing enforces that the command's implementation returns that type—AspirateImplementation
could return aDispenseResult
. This has been okay in practice so far because each implementation only returns one thing, and it's not easy for them to fall out of sync. But you can imagine how it will get messy when we start introducing more structured error types. My rough plan is forexecute() -> AspirateResult
to becomeexecute() -> AspirateResult | AspirateErrorA | AspirateErrorB | ...
, and we will want to enforce thatAspirateErrorA | AspirateErrorB
matches the type of theAspirate.error
field.Changelog
See my inline notes.
Test plan
Review requests
Does this make sense?
Risk assessment
Very low.