private static IndexerDeclarationSyntax MakeAbstract(IndexerDeclarationSyntax indexerDeclaration) { AccessorListSyntax accessorList = AccessorList(); if (indexerDeclaration.ExpressionBody != null) { accessorList = accessorList .AddAccessors( AutoGetAccessorDeclaration()); } else { AccessorDeclarationSyntax getter = indexerDeclaration.Getter(); if (getter != null) { accessorList = accessorList.AddAccessors(getter .WithBody(null) .WithSemicolonToken(SemicolonToken())); } AccessorDeclarationSyntax setter = indexerDeclaration.Setter(); if (setter != null) { accessorList = accessorList.AddAccessors(setter .WithBody(null) .WithSemicolonToken(SemicolonToken())); } } return(indexerDeclaration .WithExpressionBody(null) .WithSemicolonToken(default(SyntaxToken)) .WithAccessorList(accessorList) .WithModifiers(CreateModifiers(indexerDeclaration.Modifiers))); }
private static IndexerDeclarationSyntax MakeAbstract(IndexerDeclarationSyntax indexerDeclaration) { if (indexerDeclaration == null) { throw new ArgumentNullException(nameof(indexerDeclaration)); } AccessorListSyntax accessorList = AccessorList(); if (indexerDeclaration.ExpressionBody != null) { accessorList = accessorList .AddAccessors( AccessorDeclaration(SyntaxKind.GetAccessorDeclaration) .WithSemicolonToken(Token(SyntaxKind.SemicolonToken))); } else { AccessorDeclarationSyntax getter = indexerDeclaration.Getter(); if (getter != null) { accessorList = accessorList.AddAccessors(getter .WithBody(null) .WithSemicolonToken(Token(SyntaxKind.SemicolonToken))); } AccessorDeclarationSyntax setter = indexerDeclaration.Setter(); if (setter != null) { accessorList = accessorList.AddAccessors(setter .WithBody(null) .WithSemicolonToken(Token(SyntaxKind.SemicolonToken))); } } SyntaxTokenList modifiers = indexerDeclaration.Modifiers; if (!modifiers.Contains(SyntaxKind.AbstractKeyword)) { modifiers = modifiers.Add(Token(SyntaxKind.AbstractKeyword)); } return(indexerDeclaration .WithExpressionBody(null) .WithSemicolonToken(Token(SyntaxKind.None)) .WithAccessorList(accessorList) .WithModifiers(modifiers)); }
public static Task <Document> RefactorAsync( Document document, IndexerDeclarationSyntax indexerDeclaration, CancellationToken cancellationToken = default) { AccessorListSyntax accessorList = AccessorList(); if (indexerDeclaration.ExpressionBody != null) { accessorList = accessorList .AddAccessors( AutoGetAccessorDeclaration()); } else { AccessorDeclarationSyntax getter = indexerDeclaration.Getter(); if (getter != null) { accessorList = accessorList.AddAccessors(getter .WithBody(null) .WithSemicolonToken(SemicolonToken())); } AccessorDeclarationSyntax setter = indexerDeclaration.Setter(); if (setter != null) { accessorList = accessorList.AddAccessors(setter .WithBody(null) .WithSemicolonToken(SemicolonToken())); } } IndexerDeclarationSyntax newNode = indexerDeclaration .WithExpressionBody(null) .WithSemicolonToken(default(SyntaxToken)) .WithAccessorList(accessorList) .InsertModifier(SyntaxKind.AbstractKeyword) .RemoveModifier(SyntaxKind.VirtualKeyword) .WithTriviaFrom(indexerDeclaration) .WithFormatterAnnotation(); return(document.ReplaceNodeAsync(indexerDeclaration, newNode, cancellationToken)); }