Example #1
0
        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));
        }
Example #3
0
        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));
        }