Code Review: AstImprovements2

tfpt review “/shelveset:AstImprovements2;REDMOND\tomat”

DLR:
  Adds ExpressionCollectionBuilder (moves the implementation from 

IronRuby). This allows to construct optimized expressions via C#
initializer syntax. Adds a subclass BlockBuilder that can be used to
build blocks like so:

  Expression result = new BlockBuilder {
      expression1,
      ...
      (condition) ? foo : null,
      anotherExpression
  };

  If the expression used in the initializer is null it is skipped.
  If the expression is a sequence of expressions 

(IEnumerable) its content is included in the block.
BlockBuilder defines an implicit conversion to Expression.

  Ruby:

  Tree transformation refactorings:
  -  Replaces some AstFactory utility methods with AstUtils 

equivalents.
- Creates Lambda explicitly to avoid calls to MakeGenericType.
- Uses BlockBuilder for building complex blocks.

Tomas