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