Prevent collisions between user functions and helper functions.

This commit is contained in:
Neil Fraser
2016-06-12 12:19:08 -07:00
parent 97000e725f
commit 477562b597
8 changed files with 21 additions and 16 deletions

View File

@@ -49,14 +49,15 @@ Blockly.JavaScript['procedures_defreturn'] = function(block) {
returnValue = ' return ' + returnValue + ';\n';
}
var args = [];
for (var x = 0; x < block.arguments_.length; x++) {
args[x] = Blockly.JavaScript.variableDB_.getName(block.arguments_[x],
for (var i = 0; i < block.arguments_.length; i++) {
args[i] = Blockly.JavaScript.variableDB_.getName(block.arguments_[i],
Blockly.Variables.NAME_TYPE);
}
var code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' +
branch + returnValue + '}';
code = Blockly.JavaScript.scrub_(block, code);
Blockly.JavaScript.definitions_[funcName] = code;
// Add % so as not to collide with helper functions in definitions list.
Blockly.JavaScript.definitions_['%' + funcName] = code;
return null;
};
@@ -70,8 +71,8 @@ Blockly.JavaScript['procedures_callreturn'] = function(block) {
var funcName = Blockly.JavaScript.variableDB_.getName(
block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE);
var args = [];
for (var x = 0; x < block.arguments_.length; x++) {
args[x] = Blockly.JavaScript.valueToCode(block, 'ARG' + x,
for (var i = 0; i < block.arguments_.length; i++) {
args[i] = Blockly.JavaScript.valueToCode(block, 'ARG' + i,
Blockly.JavaScript.ORDER_COMMA) || 'null';
}
var code = funcName + '(' + args.join(', ') + ')';
@@ -83,8 +84,8 @@ Blockly.JavaScript['procedures_callnoreturn'] = function(block) {
var funcName = Blockly.JavaScript.variableDB_.getName(
block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE);
var args = [];
for (var x = 0; x < block.arguments_.length; x++) {
args[x] = Blockly.JavaScript.valueToCode(block, 'ARG' + x,
for (var i = 0; i < block.arguments_.length; i++) {
args[i] = Blockly.JavaScript.valueToCode(block, 'ARG' + i,
Blockly.JavaScript.ORDER_COMMA) || 'null';
}
var code = funcName + '(' + args.join(', ') + ');\n';