Skip to content

Commit 5024bef

Browse files
committed
Leaving blank lines before return statements in blocks
1 parent 5fa0fb5 commit 5024bef

File tree

7 files changed

+38
-1
lines changed

7 files changed

+38
-1
lines changed

ReadableExpressions.UnitTests/WhenFormattingCode.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ public void ShouldDeclareAVariableIfUsedBeforeInitialisation()
215215
string name;
216216
Func<string> getName = () => name;
217217
name = ""Fred"";
218+
218219
return getName.Invoke();";
219220

220221
Assert.AreEqual(EXPECTED.TrimStart(), translated);
@@ -414,6 +415,7 @@ public void ShouldVarAssignAVariableUsedInNestedConstructs()
414415
try
415416
{
416417
var msLength = memoryStream.Length;
418+
417419
return msLength;
418420
}
419421
catch
@@ -432,6 +434,7 @@ public void ShouldVarAssignAVariableUsedInNestedConstructs()
432434
try
433435
{
434436
var fsLength = fileStream.Length;
437+
435438
return fsLength;
436439
}
437440
catch
@@ -800,6 +803,7 @@ public void ShouldTranslateMultilineBlockSingleMethodArguments()
800803
var i = 3;
801804
i = i * 5;
802805
i = i / 3;
806+
803807
return i;
804808
}
805809
catch

ReadableExpressions.UnitTests/WhenTranslatingAssignments.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public void ShouldTranslateAMultiLineCheckedSubtractionAssignment()
8686
{
8787
var one = Console.Read();
8888
var two = Console.Read();
89+
8990
return (one + two);
9091
}
9192
}";
@@ -418,12 +419,14 @@ public void ShouldTranslateAMultipleLineTernaryAssignment()
418419
var one = Console.Read();
419420
var two = Console.Read();
420421
var resultOne = one * two;
422+
421423
return resultOne;
422424
}
423425
: {
424426
var three = Console.Read();
425427
var four = Console.Read();
426428
var resultTwo = three / four;
429+
427430
return resultTwo;
428431
}";
429432
Assert.AreEqual(EXPECTED.TrimStart(), translated);
@@ -504,6 +507,7 @@ public void ShouldTranslateANestedBlockAssignment()
504507
{
505508
var one = Console.Read();
506509
var two = Console.Read();
510+
507511
return (one - two);
508512
}";
509513
Assert.AreEqual(EXPECTED.TrimStart(), translated);
@@ -533,6 +537,7 @@ public void ShouldTranslateMultiStatementValueBlockAssignments()
533537
{
534538
List<int> ints;
535539
Console.Read();
540+
536541
return (ints == null)
537542
? new List<int>()
538543
: {
@@ -640,6 +645,7 @@ public void ShouldTranslateAssignmentsOfNestedVariableBlocksWithATernaryReturnVa
640645
guid =
641646
{
642647
var id = value;
648+
643649
Guid guidValue;
644650
return Guid.TryParse((id != null) ? id.ToString() : null, out guidValue) ? guidValue : default(Guid);
645651
}";
@@ -687,6 +693,7 @@ public void ShouldTranslateAssignmentsOfNestedVariableBlocksWithANestedTernaryRe
687693
guid =
688694
{
689695
var id = value;
696+
690697
Guid guidValue;
691698
return (id != null)
692699
? Guid.TryParse(id.ToString(), out guidValue) ? guidValue : default(Guid)

ReadableExpressions.UnitTests/WhenTranslatingBlocks.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ public void ShouldTranslateAVariableBlockLambdaWithAReturnValue()
120120
{
121121
var count = 0;
122122
++count;
123+
123124
return count;
124125
}";
125126

@@ -146,6 +147,7 @@ public void ShouldTranslateAVariableBlockLambdaWithAReturnExpression()
146147
const string EXPECTED = @"() =>
147148
{
148149
var list = new List<int> { 1, 2, 3 };
150+
149151
return list.ToArray();
150152
}";
151153

@@ -356,6 +358,7 @@ public void ShouldIncludeAReturnStatementForACoalesce()
356358

357359
const string EXPECTED = @"
358360
var myString = yourString;
361+
359362
return (myString ?? string.Empty);";
360363

361364
Assert.AreEqual(EXPECTED.TrimStart(), translated);

ReadableExpressions.UnitTests/WhenTranslatingConditionals.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,13 @@ public void ShouldTranslateAMultipleLineNonVoidIfElseStatements()
227227
{
228228
Console.WriteLine(""Hello"");
229229
Console.WriteLine(""Goodbye"");
230+
230231
return i;
231232
}
232233
233234
Console.WriteLine(""Goodbye"");
234235
Console.WriteLine(""Hello"");
236+
235237
return i;
236238
";
237239
Assert.AreEqual(EXPECTED.Trim(), translated);
@@ -403,6 +405,7 @@ public void ShouldIncludeReturnKeywordsForConstantsAndCasts()
403405
404406
Console.WriteLine(""One!"");
405407
Console.WriteLine(""One!"");
408+
406409
return ((long?)1);";
407410

408411
Assert.AreEqual(EXPECTED.TrimStart(), translated);

ReadableExpressions.UnitTests/WhenTranslatingGotos.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ public void ShouldTranslateAReturnStatementWithABlock()
187187
var i = 0;
188188
i = i + 1;
189189
i = i + 2;
190+
190191
return i;
191192
}";
192193

@@ -224,6 +225,7 @@ public void ShouldTranslateALabelWithABlockDefaultValue()
224225
return
225226
{
226227
i = i + 2;
228+
227229
return i;
228230
};";
229231

ReadableExpressions.UnitTests/WhenTranslatingMathsOperations.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ public void ShouldTranslateACheckedMultiplicationExpression()
123123
{
124124
var one = Console.Read();
125125
var two = Console.Read();
126+
126127
return (one + two);
127128
} * i
128129
}";

ReadableExpressions/Translators/BlockExpressionTranslator.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ private static IEnumerable<string> GetBlockStatements(
6868
for (var i = 0; i < lines.Count; i++)
6969
{
7070
var line = lines[i];
71+
var isNotFirstLine = (i > 0);
72+
var previousLine = isNotFirstLine ? lines[i - 1] : null;
7173

72-
if ((i > 0) && LeaveBlankLineBefore(line, lines[i - 1]))
74+
if (isNotFirstLine && LeaveBlankLineBefore(line, previousLine))
7375
{
7476
yield return string.Empty;
7577
}
@@ -92,6 +94,11 @@ private static IEnumerable<string> GetBlockStatements(
9294
yield break;
9395
}
9496

97+
if (isNotFirstLine && LeaveBlankLineBeforeReturn(line, previousLine))
98+
{
99+
yield return string.Empty;
100+
}
101+
95102
if (CodeBlock.IsSingleStatement(line.SplitToLines()))
96103
{
97104
yield return "return " + line;
@@ -219,5 +226,15 @@ private static bool DoNotAddReturnStatement(BlockExpression block, ICollection<s
219226
{
220227
return (lines.Count <= 1) || !block.IsReturnable();
221228
}
229+
230+
private static bool LeaveBlankLineBeforeReturn(string line, string previousLine)
231+
{
232+
if (previousLine.IsComment() || LeaveBlankLineAfter(previousLine, line))
233+
{
234+
return false;
235+
}
236+
237+
return true;
238+
}
222239
}
223240
}

0 commit comments

Comments
 (0)