using System;
using System.Linq;
using CTA.Rules.Actions.ActionHelpers;
using CTA.Rules.Config;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editing;
namespace CTA.Rules.Actions.Csharp
{
public class ExpressionActions
{
///
/// This Method adds an await operator to the invocation expression. For example, Math.Round(5.5) invocation expression would return await Math.Abs(5.5).
///
///
public Func GetAddAwaitOperatorAction(string _)
{
SyntaxNode AddAwaitOperator(SyntaxGenerator syntaxGenerator, SyntaxNode node)
{
AwaitExpressionSyntax newNode = SyntaxFactory.AwaitExpression(SyntaxFactory.ParseExpression(node.WithoutTrivia().ToFullString()))
.NormalizeWhitespace();
newNode = newNode.WithTriviaFrom(node);
return SyntaxFactory.ExpressionStatement(newNode);
}
return AddAwaitOperator;
}
public Func GetAddCommentAction(string comment)
{
SyntaxNode AddComment(SyntaxGenerator syntaxGenerator, SyntaxNode node)
{
return CommentHelper.AddCSharpComment(node, comment);
}
return AddComment;
}
}
}