public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax node) { var methodSymbol = semanticModel.GetSymbolInfo(node).Symbol as IMethodSymbol; var methodName = methodSymbol?.Name; var methodType = methodSymbol?.ReturnType.OriginalDefinition?.ToString(); var acceptedArguments = new string[] { "\"c#:LocalTime.UtcNow\"", "\"c#:LocalTime.Now\"", "cs(\"LocalTime.UtcNow\")", "cs(\"LocalTime.Now\")" }; if (methodName == "Default" && methodType == "MSharp.DateTimeProperty") { if (node.ArgumentsCountShouldBe(1) && node.FirstArgumentShouldBeIn(acceptedArguments)) { var lineSpan = node.GetFileLinePosSpan(); AddReport(new ChangesReport(node) { LineNumber = lineSpan.StartLinePosition.Line, Column = lineSpan.StartLinePosition.Character, Message = "use DefaultToNow instead.", Generator = nameof(LocalTimeRewriter) }); return(SyntaxFactory.InvocationExpression( SyntaxFactory.MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, node.GetLeftSideExpression(), SyntaxFactory.IdentifierName("DefaultToNow")), SyntaxFactory.ArgumentList())); } } return(base.VisitInvocationExpression(node)); }
public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax node) { var methodSymbol = semanticModel.GetSymbolInfo(node).Symbol as IMethodSymbol; var methodName = methodSymbol?.Name; var methodType = methodSymbol?.ReturnType.OriginalDefinition?.ToString(); var acceptedArguments = new string[] { "\"c#:LocalTime.UtcNow\"", "\"c#:LocalTime.Now\"", "cs(\"LocalTime.UtcNow\")", "cs(\"LocalTime.Now\")" }; if (methodName == "Default" && methodType == "MSharp.DateTimeProperty") { if (node.ArgumentsCountShouldBe(1) && node.FirstArgumentShouldBeIn(acceptedArguments)) { return(SyntaxFactory.InvocationExpression( SyntaxFactory.MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, node.GetLeftSideExpression(), SyntaxFactory.IdentifierName("DefaultToNow")), SyntaxFactory.ArgumentList())); } } return(base.VisitInvocationExpression(node)); }