/// <summary> /// Visits a block expression slim tree node, produces a block expression. /// </summary> /// <param name="node">Node to visit.</param> /// <param name="variables">Variables in the block.</param> /// <param name="expressions">Expression slims in the block.</param> /// <returns>The block expression represented by the expression slim node.</returns> protected override Expression MakeBlock(BlockExpressionSlim node, ReadOnlyCollection <ParameterExpression> variables, ReadOnlyCollection <Expression> expressions) { if (node.Type != null) { var type = MakeType(node.Type); return(_factory.Block(type, variables, expressions)); } else { return(_factory.Block(variables, expressions)); } }
protected internal override ExpressionSlim VisitBlock(BlockExpressionSlim node) { // CONSIDER: Block can have a custom type which has been historically omitted here. We can consider adding it later. Append("Block("); Visit(", ", node.Variables); if (node.Variables.Count > 0) { Append("; "); } Visit("; ", node.Expressions); Append(')'); return(node); }
/// <summary> /// Visits a block expression tree node. /// </summary> /// <param name="node">Node to visit.</param> /// <returns>Result of visiting the node.</returns> protected internal virtual ExpressionSlim VisitBlock(BlockExpressionSlim node) { return(node.Update(VisitAndConvert(node.Variables), Visit(node.Expressions))); }