Boo.Lang.Compiler.Steps.EmitAssembly.SetLocal C# (CSharp) Метод

SetLocal() приватный Метод

private SetLocal ( BinaryExpression node, InternalLocal tag, bool leaveValueOnStack ) : void
node BinaryExpression
tag InternalLocal
leaveValueOnStack bool
Результат void
        void SetLocal(BinaryExpression node, InternalLocal tag, bool leaveValueOnStack)
        {
            if (AstUtil.IsIndirection(node.Left))
                _il.Emit(OpCodes.Ldloc, tag.LocalBuilder);

            node.Right.Accept(this); // leaves type on stack

            IType typeOnStack = null;

            if (leaveValueOnStack)
            {
                typeOnStack = PeekTypeOnStack();
                Dup();
            }
            else
            {
                typeOnStack = PopType();
            }

            if (!AstUtil.IsIndirection(node.Left))
                EmitAssignment(tag, typeOnStack);
            else
                EmitIndirectAssignment(tag, typeOnStack);
        }
EmitAssembly