private static Task <Document> RefactorAsync( Document document, ArgumentListSyntax argumentList, SeparatedSyntaxListSelection <ArgumentSyntax> selection, CancellationToken cancellationToken = default(CancellationToken)) { var rewriter = new RemoveParameterNameRewriter(selection.ToImmutableArray()); SyntaxNode newNode = rewriter .Visit(argumentList) .WithFormatterAnnotation(); return(document.ReplaceNodeAsync(argumentList, newNode, cancellationToken)); }
private static async Task <Document> RefactorAsync( Document document, ArgumentListSyntax argumentList, SeparatedSyntaxListSelection <ArgumentSyntax> selection, CancellationToken cancellationToken = default(CancellationToken)) { SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); var rewriter = new AddParameterNameRewriter(selection.ToImmutableArray(), semanticModel); SyntaxNode newNode = rewriter .Visit(argumentList) .WithFormatterAnnotation(); return(await document.ReplaceNodeAsync(argumentList, newNode, cancellationToken).ConfigureAwait(false)); }
public static void ComputeRefactoring( RefactoringContext context, EnumDeclarationSyntax enumDeclaration, SeparatedSyntaxListSelection <EnumMemberDeclarationSyntax> selection, SemanticModel semanticModel) { INamedTypeSymbol enumSymbol = semanticModel.GetDeclaredSymbol(enumDeclaration, context.CancellationToken); if (enumSymbol?.IsEnumWithFlags() != true) { return; } object[] constantValues = selection .Select(f => semanticModel.GetDeclaredSymbol(f, context.CancellationToken)) .Where(f => f.HasConstantValue) .Select(f => f.ConstantValue) .ToArray(); object combinedValue = GetCombinedValue(constantValues, enumSymbol); if (combinedValue == null) { return; } if (IsValueDefined(enumSymbol, combinedValue)) { return; } string name = NameGenerator.Default.EnsureUniqueMemberName( string.Concat(selection.Select(f => f.Identifier.ValueText)), enumSymbol); EnumMemberDeclarationSyntax newEnumMember = CreateEnumMember(name, selection.ToImmutableArray()); int insertIndex = selection.LastIndex + 1; context.RegisterRefactoring( $"Generate enum member '{name}'", cancellationToken => RefactorAsync(context.Document, enumDeclaration, newEnumMember, insertIndex, cancellationToken), RefactoringIdentifiers.GenerateEnumMember); }