@@ -17,7 +17,7 @@ public class ExpressionTranslator : ExpressionVisitor
1717 private const int _tabsize = 4 ;
1818 private StringWriter _writer ;
1919 private int _indentLevel ;
20- private StringWriter _appendWriter ;
20+ private List < StringWriter > _appendWriters ;
2121
2222 private Dictionary < Type , string > _typeNames ;
2323 private HashSet < string > _usings ;
@@ -1147,6 +1147,7 @@ private Expression VisitLambda(LambdaExpression node, LambdaType type)
11471147 }
11481148
11491149 private HashSet < LambdaExpression > _visitedLambda ;
1150+ private int _writerLevel ;
11501151 protected override Expression VisitLambda < T > ( Expression < T > node )
11511152 {
11521153 Write ( GetName ( node ) ) ;
@@ -1158,14 +1159,17 @@ protected override Expression VisitLambda<T>(Expression<T> node)
11581159 _visitedLambda . Add ( node ) ;
11591160
11601161 //switch writer to append writer
1161- if ( _appendWriter == null )
1162- _appendWriter = new StringWriter ( ) ;
1162+ if ( _appendWriters == null )
1163+ _appendWriters = new List < StringWriter > ( ) ;
1164+ if ( _writerLevel == _appendWriters . Count )
1165+ _appendWriters . Add ( new StringWriter ( ) ) ;
11631166
11641167 var temp = _writer ;
11651168 var oldIndent = _indentLevel ;
11661169 try
11671170 {
1168- _writer = _appendWriter ;
1171+ _writer = _appendWriters [ _writerLevel ] ;
1172+ _writerLevel ++ ;
11691173 ResetIndentLevel ( ) ;
11701174
11711175 WriteLine ( ) ;
@@ -1176,6 +1180,7 @@ protected override Expression VisitLambda<T>(Expression<T> node)
11761180 //switch back
11771181 _writer = temp ;
11781182 _indentLevel = oldIndent ;
1183+ _writerLevel -- ;
11791184 }
11801185 }
11811186
@@ -1819,8 +1824,13 @@ public override string ToString()
18191824 WriteLine ( ) ;
18201825 }
18211826 _writer . Write ( temp ) ;
1822- if ( _appendWriter != null )
1823- _writer . Write ( _appendWriter ) ;
1827+ if ( _appendWriters != null )
1828+ {
1829+ foreach ( var item in _appendWriters )
1830+ {
1831+ _writer . Write ( item ) ;
1832+ }
1833+ }
18241834 if ( Definitions ? . TypeName != null )
18251835 {
18261836 Outdent ( ) ;
0 commit comments