Fix "Fork, Conditional Jump, Encodings" test and fix the "Return" operation. #88
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.
The return operation was setting
state.progress
to the length of the recipe.Under async this is incorrect behaviour because after any flow control operation the Recipe executes
state.progress + 1
, and then at the beginning of the recursedRecipe.execute
checks the length and returns ifcurrentStep === recipe.opList.length
Return now sets
state.progress
equal tostate.opList.length - 1
.This bug could instead have been fixed by changing finish condition from
currentStep === recipe.opList.length
tocurrentStep >= recipe.opList.length
to prevent this class of bugs in the future. I'll leave that decision to @n1474335.Additionally there was a type in the test "Fork, Conditional Jump, Encodings" which was just a missing newline in the input which was required to match the output.
Screenshot of tests passing