private static LocalDeclarationStatementSyntax GetNewLocalDeclaration( ConditionalExpressionSyntax conditionalExpression, LocalDeclarationStatementSyntax localDeclaration, SemanticModel semanticModel) { bool isVar = localDeclaration.Declaration.Type.IsVar; localDeclaration = localDeclaration.RemoveNode( conditionalExpression.Parent, SyntaxRemoveOptions.KeepExteriorTrivia); if (isVar) { ITypeSymbol typeSymbol = semanticModel.GetTypeInfo(conditionalExpression).Type; if (typeSymbol != null && typeSymbol.Kind != SymbolKind.ErrorType) { localDeclaration = localDeclaration.ReplaceNode( localDeclaration.Declaration.Type, TypeSyntaxRefactoring.CreateTypeSyntax(typeSymbol).WithAdditionalAnnotations(Simplifier.Annotation)); } } return(localDeclaration); }
public static async Task <Document> RefactorAsync( Document document, ExpressionSyntax expression, ITypeSymbol typeSymbol, CancellationToken cancellationToken) { SyntaxNode root = await document.GetSyntaxRootAsync(cancellationToken); SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken); TypeSyntax type = TypeSyntaxRefactoring.CreateTypeSyntax(typeSymbol) .WithAdditionalAnnotations(Simplifier.Annotation); CastExpressionSyntax castExpression = SyntaxFactory.CastExpression(type, expression) .WithTriviaFrom(expression); root = root.ReplaceNode(expression, castExpression); return(document.WithSyntaxRoot(root)); }