public static async Task <Document> RefactorAsync( Document document, BinaryExpressionSyntax binaryExpression, CancellationToken cancellationToken) { SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); StringConcatenationExpressionInfo concatenationInfo = SyntaxInfo.StringConcatenationExpressionInfo(binaryExpression, semanticModel, cancellationToken); StringConcatenationAnalysis analysis = concatenationInfo.Analyze(); ExpressionSyntax newNode; if (analysis.ContainsStringLiteral) { if (analysis.ContainsVerbatimExpression && concatenationInfo.ContainsMultiLineExpression()) { newNode = concatenationInfo.ToMultiLineStringLiteralExpression(); } else { newNode = concatenationInfo.ToStringLiteralExpression(); } } else { newNode = concatenationInfo.ToInterpolatedStringExpression(); } newNode = newNode.WithTriviaFrom(binaryExpression); return(await document.ReplaceNodeAsync(binaryExpression, newNode, cancellationToken).ConfigureAwait(false)); }
private static Task <Document> ToInterpolatedStringAsync( Document document, StringConcatenationExpressionInfo concatenationInfo, CancellationToken cancellationToken) { InterpolatedStringExpressionSyntax newExpression = concatenationInfo.ToInterpolatedStringExpression(); return(RefactorAsync(document, concatenationInfo, newExpression, cancellationToken)); }