IronRuby.Runtime.Calls.ArgsBuilder.GetArgument C# (CSharp) Method

GetArgument() private method

private GetArgument ( int argIndex, bool &isSplatted ) : Expression
argIndex int
isSplatted bool
return System.Linq.Expressions.Expression
        private Expression GetArgument(int argIndex, out bool isSplatted) {
            if (argIndex < _callArguments.SimpleArgumentCount) {
                isSplatted = false;
                return _callArguments.GetSimpleArgumentExpression(argIndex);
            }

            int i = argIndex - _callArguments.SimpleArgumentCount;
            if (i < _listLength) {
                isSplatted = true;
                return Ast.Call(_listVariable, Methods.IList_get_Item, AstUtils.Constant(i));
            }

            if (i == _listLength && _callArguments.Signature.HasRhsArgument) {
                isSplatted = false;
                return _callArguments.GetRhsArgumentExpression();
            }

            isSplatted = false;
            return null;
        }