@@ -158,7 +158,6 @@ public void ShouldNotIncludeLabelNamesWithoutAGoto()
158158 Assert . AreEqual ( EXPECTED . TrimStart ( ) , translated ) ;
159159 }
160160
161-
162161 [ TestMethod ]
163162 public void ShouldTranslateAReturnStatementWithABlock ( )
164163 {
@@ -195,5 +194,42 @@ public void ShouldTranslateAReturnStatementWithABlock()
195194
196195 Assert . AreEqual ( EXPECTED . TrimStart ( ) , translated ) ;
197196 }
197+
198+ [ TestMethod ]
199+ public void ShouldTranslateALabelWithABlockDefaultValue ( )
200+ {
201+ var returnLabelTarget = Expression . Label ( typeof ( int ) , "Return" ) ;
202+
203+ var intVariable = Expression . Variable ( typeof ( int ) , "i" ) ;
204+ var variableInit = Expression . Assign ( intVariable , Expression . Constant ( 0 ) ) ;
205+ var variablePlusOne = Expression . Add ( intVariable , Expression . Constant ( 1 ) ) ;
206+ var variableAdditionOne = Expression . Assign ( intVariable , variablePlusOne ) ;
207+ var variablePlusTwo = Expression . Add ( intVariable , Expression . Constant ( 2 ) ) ;
208+ var variableAdditionTwo = Expression . Assign ( intVariable , variablePlusTwo ) ;
209+
210+ var variableBlock = Expression . Block ( variableAdditionTwo , intVariable ) ;
211+
212+ var returnVariableBlock = Expression . Label ( returnLabelTarget , variableBlock ) ;
213+
214+ var returnBlock = Expression . Block (
215+ new [ ] { intVariable } ,
216+ variableInit ,
217+ variableAdditionOne ,
218+ returnVariableBlock ) ;
219+
220+ const string EXPECTED = @"
221+ var i = 0;
222+ i = i + 1;
223+
224+ return
225+ {
226+ i = i + 2;
227+ return i;
228+ };" ;
229+
230+ var translated = returnBlock . ToReadableString ( ) ;
231+
232+ Assert . AreEqual ( EXPECTED . TrimStart ( ) , translated ) ;
233+ }
198234 }
199235}
0 commit comments