private BoundIfStatement BindIfStatement(IfStatementSyntax syntax) { BaseBoundExpression ifExpression = this.BindExpression(syntax.IfPart.Condition); BoundStatementBlock ifBody = this.BindStatementBlock(syntax.IfPart.Body); BoundIfPart ifPart = new BoundIfPart(syntax.IfPart, ifExpression, ifBody); List <BoundElseIfPart> elseIfParts = new List <BoundElseIfPart>(); foreach (var part in syntax.ElseIfParts) { BaseBoundExpression elseIfExpression = this.BindExpression(part.Condition); BoundStatementBlock elseIfBody = this.BindStatementBlock(part.Body); elseIfParts.Add(new BoundElseIfPart(part, elseIfExpression, elseIfBody)); } BoundElsePart elsePart = null; if (!syntax.ElsePartOpt.IsDefault()) { BoundStatementBlock elseBody = this.BindStatementBlock(syntax.ElsePartOpt.Body); elsePart = new BoundElsePart(syntax.ElsePartOpt, elseBody); } return(new BoundIfStatement(syntax, ifPart, elseIfParts, elsePart)); }
public BoundIfStatement(IfStatementSyntax syntax, BoundIfPart ifPart, IReadOnlyList <BoundElseIfPart> elseIfParts, BoundElsePart elsePartOpt) { Debug.Assert(!syntax.IsDefault(), "'syntax' must not be null."); Debug.Assert(!ifPart.IsDefault(), "'ifPart' must not be null."); Debug.Assert(!elseIfParts.IsDefault(), "'elseIfParts' must not be null."); this.Syntax = syntax; this.IfPart = ifPart; this.ElseIfParts = elseIfParts; this.ElsePartOpt = elsePartOpt; }
private protected virtual void VisitIfPart(BoundIfPart node) { this.DefaultVisit(node); }