Serialize variable IDs in procedure definitions #1644
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.
The basics
The details
Resolves
Fixes #1642
Proposed Changes
Serialize and deserialize variable IDs for arguments in procedure definitions.
Reason for Changes
Dragging this block from the toolbox into the workspace failed.
The initial XML had no variable IDs, so the code to load the blocks in the flyout created a potential variable for "list" (and another potential variable for "x").
Dragging from the flyout to the workspace uses
blockToDom
, thendomToBlock
.The serialization of the procedure definition block and its mutation did not include a variable ID, so a new variable was created (with a new ID).
The serialization of the "list" reference in the inner blocks did include a variable ID, which was the ID of the potential variable in the flyout.
This ID did not match the new ID of the parameter, so there was a crashing error.
Test Coverage
Tested on:
Additional Information
Dragged in the above block from the flyout.