From 74fd58131bfc0f29480b5fd487e8bae948802065 Mon Sep 17 00:00:00 2001 From: Rachel Fenichel Date: Tue, 20 Feb 2018 13:18:48 -0800 Subject: [PATCH] Serialize variable IDs in procedure definitions --- blocks/procedures.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/blocks/procedures.js b/blocks/procedures.js index 1874ee1d065..cb2cec2263a 100644 --- a/blocks/procedures.js +++ b/blocks/procedures.js @@ -132,9 +132,11 @@ Blockly.Blocks['procedures_defnoreturn'] = { if (opt_paramIds) { container.setAttribute('name', this.getFieldValue('NAME')); } - for (var i = 0; i < this.arguments_.length; i++) { + for (var i = 0; i < this.argumentVarModels_.length; i++) { var parameter = document.createElement('arg'); - parameter.setAttribute('name', this.arguments_[i]); + var argModel = this.argumentVarModels_[i]; + parameter.setAttribute('name', argModel.name); + parameter.setAttribute('varId', argModel.getId()); if (opt_paramIds && this.paramIds_) { parameter.setAttribute('paramId', this.paramIds_[i]); } @@ -158,9 +160,10 @@ Blockly.Blocks['procedures_defnoreturn'] = { for (var i = 0, childNode; childNode = xmlElement.childNodes[i]; i++) { if (childNode.nodeName.toLowerCase() == 'arg') { var varName = childNode.getAttribute('name'); + var varId = childNode.getAttribute('varId'); this.arguments_.push(varName); var variable = Blockly.Variables.getOrCreateVariablePackage( - this.workspace, null, varName, ''); + this.workspace, varId, varName, ''); this.argumentVarModels_.push(variable); } }