Skip to content

Commit a580dc6

Browse files
committed
handle return label
1 parent 8c20f3d commit a580dc6

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

ExpressionTranslator/ExpressionTranslator.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1035,6 +1035,7 @@ private string GetName(LambdaExpression lambda)
10351035
return string.IsNullOrEmpty(lambda.Name) ? GetName("func", lambda) : lambda.Name;
10361036
}
10371037

1038+
private HashSet<LabelTarget> _returnTargets;
10381039
protected override Expression VisitGoto(GotoExpression node)
10391040
{
10401041
switch (node.Kind)
@@ -1043,6 +1044,9 @@ protected override Expression VisitGoto(GotoExpression node)
10431044
Write("goto ", GetName(node.Target));
10441045
break;
10451046
case GotoExpressionKind.Return:
1047+
if (_returnTargets == null)
1048+
_returnTargets = new HashSet<LabelTarget>();
1049+
_returnTargets.Add(node.Target);
10461050
var value = Visit("return ", node.Value);
10471051
return node.Update(node.Target, value);
10481052
case GotoExpressionKind.Break:
@@ -1092,7 +1096,8 @@ protected override Expression VisitInvocation(InvocationExpression node)
10921096

10931097
protected override Expression VisitLabel(LabelExpression node)
10941098
{
1095-
Write(GetName(node.Target), ":");
1099+
if (_returnTargets == null || !_returnTargets.Contains(node.Target))
1100+
Write(GetName(node.Target), ":");
10961101
return node;
10971102
}
10981103

0 commit comments

Comments
 (0)