Skip to content

Commit

Permalink
Add comments
Browse files Browse the repository at this point in the history
  • Loading branch information
GerardSmit committed Jan 26, 2024
1 parent ae887b2 commit e86d483
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions src/Zomp.SyncMethodGenerator/AsyncToSyncRewriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -515,34 +515,34 @@ bool IsValidParameter(ParameterSyntax ps)

public override SyntaxNode? VisitReturnStatement(ReturnStatementSyntax node)
{
// Replace expressions that return the task directly.
if (node is { Expression: { } returnExpression } &&
semanticModel.GetTypeInfo(returnExpression).Type is INamedTypeSymbol { Name: "Task" or "ValueTask", IsGenericType: false } returnType &&
returnType.ToString() is TaskType or ValueTaskType)
{
var result = (ExpressionSyntax)Visit(returnExpression);

if (node.Parent is BlockSyntax)
if (node.Parent is not BlockSyntax)
{
// The parent is not a block, for example: if (true) return ReturnAsync();
// We need to create a block with the expression and the return statement.
return Block(List(new StatementSyntax[]
{
ExpressionStatement(result).WithTrailingTrivia(Space),
ReturnStatement().WithTrailingTrivia(node.GetTrailingTrivia()),
ExpressionStatement(result).WithLeadingTrivia(Space).WithTrailingTrivia(Space),
ReturnStatement().WithTrailingTrivia(Space),
}))
.WithOpenBraceToken(MissingToken(SyntaxKind.OpenBraceToken))
.WithCloseBraceToken(MissingToken(SyntaxKind.CloseBraceToken));
.WithLeadingTrivia(node.GetLeadingTrivia())
.WithTrailingTrivia(node.GetTrailingTrivia());
}

var statements = List(new StatementSyntax[]
{
ExpressionStatement(result).WithLeadingTrivia(Space).WithTrailingTrivia(Space),
ReturnStatement().WithTrailingTrivia(Space),
});

var block = Block(statements)
.WithLeadingTrivia(node.GetLeadingTrivia())
.WithTrailingTrivia(node.GetTrailingTrivia());

return block;
// Create a block without the braces (eg. Return(); return;)
return Block(List(new StatementSyntax[]
{
ExpressionStatement(result).WithTrailingTrivia(Space),
ReturnStatement().WithTrailingTrivia(node.GetTrailingTrivia()),
}))
.WithOpenBraceToken(MissingToken(SyntaxKind.OpenBraceToken))
.WithCloseBraceToken(MissingToken(SyntaxKind.CloseBraceToken));
}

return base.VisitReturnStatement(node)!;
Expand Down

0 comments on commit e86d483

Please sign in to comment.