fix(toLeopard): don't convert InputShape.Any literals to numbers
#161
+23
−13
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 documentation for
InputShape.Anysays (emphasis mine):However, we were previously casting
InputShape.Anyliterals to numbers whenever possible insidestaticBlockInputToLiteral. This means that e.g.switch costume to "0"would switch to the 0th costume (which wraps to the last costume) instead of the costume named"0".I've rewritten
staticBlockInputToLiteralto handle each different input shape explicitly, and to only castInputShape.NumberandInputShape.Indexto numbers. The logic is the same as Scratch'sCast.toNumber: instead of bailing out if the cast result is NaN, we treat it as 0.This is what #160 tried to fix, but I believe that fix is not correct. This is an alternative, and hence closes #160.