|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#nullable disable
using System.Linq;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Shared.Extensions;
namespace Microsoft.CodeAnalysis.CSharp.Extensions;
internal static class ArrowExpressionClauseSyntaxExtensions
{
public static bool TryConvertToBlock(
this ArrowExpressionClauseSyntax arrowExpression,
SyntaxToken semicolonToken,
bool createReturnStatementForExpression,
out BlockSyntax block)
{
if (!arrowExpression.TryConvertToStatement(semicolonToken, createReturnStatementForExpression, out var statement))
{
block = null;
return false;
}
block = SyntaxFactory.Block(statement);
return true;
}
public static bool TryConvertToStatement(
this ArrowExpressionClauseSyntax arrowExpression,
SyntaxToken semicolonToken,
bool createReturnStatementForExpression,
out StatementSyntax statement)
{
if (!arrowExpression.Expression.TryConvertToStatement(
semicolonToken, createReturnStatementForExpression, out statement))
{
return false;
}
if (arrowExpression.ArrowToken.TrailingTrivia.Any(t => t.IsSingleOrMultiLineComment()))
statement = statement.WithPrependedLeadingTrivia(arrowExpression.ArrowToken.TrailingTrivia);
if (arrowExpression.ArrowToken.LeadingTrivia.Any(t => t.IsSingleOrMultiLineComment()))
statement = statement.WithPrependedLeadingTrivia(arrowExpression.ArrowToken.LeadingTrivia);
return true;
}
}
|