void setParameters(functionCallClass functionCall, functionDeclarationClass function) { if (function.functionHead.functionParameters.Count == 0) { return; } if (function.functionHead.functionParameters.Count < functionCall.functionParameterList.Count && !function.functionHead.functionParameters.Last().isVariadic) { return; } //error: signature mismatch // no default parameters or overriden default parameters for (int i = 0; i < functionCall.functionParameterList.Count; i++) { var _variable = variable(function.functionHead.functionParameters[i].variableName); var exp = functionCall.functionParameterList[i].extraInfo; exp = exp is VariableValue? ((VariableValue)exp).Value : exp; ((VariableValue)_variable.extraInfo).Value = exp; } // default parameters for (int i = functionCall.functionParameterList.Count; i < function.functionHead.functionParameters.Count; i++) { var _variable = variable(function.functionHead.functionParameters[i].variableName); var exp = traverser.objectDispatcher(function.functionHead.functionParameters[i].expression).extraInfo; exp = exp is VariableValue? ((VariableValue)exp).Value : exp; ((VariableValue)_variable.extraInfo).Value = exp; } }
public virtual string functionDeclaration(functionDeclarationClass context) { return(context.defaultValue); }