Exemple #1
0
        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;
            }
        }
Exemple #2
0
 public virtual string functionDeclaration(functionDeclarationClass context)
 {
     return(context.defaultValue);
 }