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

OnIfStatement() публичный Метод

public OnIfStatement ( IfStatement node ) : void
node Boo.Lang.Compiler.Ast.IfStatement
Результат void
        public override void OnIfStatement(IfStatement node)
        {
            Label endLabel = _il.DefineLabel();

            EmitDebugInfo(node);
            EmitBranchFalse(node.Condition, endLabel);

            node.TrueBlock.Accept(this);
            if (null != node.FalseBlock)
            {
                Label elseEndLabel = _il.DefineLabel();
                if (!node.TrueBlock.EndsWith<ReturnStatement>() && !node.TrueBlock.EndsWith<RaiseStatement>())
                    _il.Emit(OpCodes.Br, elseEndLabel);
                _il.MarkLabel(endLabel);

                endLabel = elseEndLabel;
                node.FalseBlock.Accept(this);
            }

            _il.MarkLabel(endLabel);
        }
EmitAssembly