Boo.Lang.Compiler.Steps.ImplementICallableOnCallableDefinitions.PropagateByRefParameterChanges C# (CSharp) Method

PropagateByRefParameterChanges() private method

private PropagateByRefParameterChanges ( Method call, IParameter parameters, InternalLocal temporaries ) : void
call Boo.Lang.Compiler.Ast.Method
parameters IParameter
temporaries Boo.Lang.Compiler.TypeSystem.InternalLocal
return void
        void PropagateByRefParameterChanges(Method call, IParameter[] parameters, InternalLocal[] temporaries)
        {
            int byRefIndex = 0;
            for (int i=0; i<parameters.Length; ++i)
            {
                if (!parameters[i].IsByRef) continue;

                SlicingExpression slice = CodeBuilder.CreateSlicing(
                                            CodeBuilder.CreateReference(call.Parameters[0]),
                                            i);
                call.Body.Add(
                    CodeBuilder.CreateAssignment(
                        slice,
                        CodeBuilder.CreateReference(temporaries[byRefIndex])));
                ++byRefIndex;
            }
        }