# Code Review: AstImprovements

**URL:** <https://www.ruby-forum.com/t/code-review-astimprovements/179976>\
**Category:** IronRuby\
**Created:** [December 9, 2009, 2:38am UTC](https://www.ruby-forum.com/t/code-review-astimprovements/179976 "2009-12-09T02:38:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![grujildo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/94ad74/32.png) [@grujildo](https://www.ruby-forum.com/u/grujildo)\
**Post date:** [December 9, 2009, 2:38am UTC](https://www.ruby-forum.com/t/code-review-astimprovements/179976/1 "2009-12-09T02:38:46Z")

</div>

tfpt review “/shelveset:AstImprovements;REDMOND\tomat”  
Comment :  
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
