Boo.Lang.Compiler.Steps.ExpandVarArgsMethodInvocations.ExpandInvocation C# (CSharp) Метод

ExpandInvocation() защищенный Метод

protected ExpandInvocation ( MethodInvocationExpression node, IParameter parameters ) : void
node Boo.Lang.Compiler.Ast.MethodInvocationExpression
parameters IParameter
Результат void
        protected virtual void ExpandInvocation(MethodInvocationExpression node, IParameter[] parameters)
        {
            if (node.Arguments.Count > 0 && AstUtil.IsExplodeExpression(node.Arguments[-1]))
            {
                // explode the arguments
                node.Arguments.ReplaceAt(-1, ((UnaryExpression)node.Arguments[-1]).Operand);
                return;
            }

            int lastParameterIndex = parameters.Length-1;
            IType varArgType = parameters[lastParameterIndex].Type;

            ExpressionCollection varArgs = node.Arguments.PopRange(lastParameterIndex);
            node.Arguments.Add(CodeBuilder.CreateArray(varArgType, varArgs));
        }