Exemple #1
0
        protected override async Task <Document> GetChangedDocumentAsync(CancellationToken cancellationToken)
        {
            Document document = _context.Context.Document;

            SyntaxNode rootNode = await document.GetSyntaxRootAsync(_context.Context.CancellationToken).ConfigureAwait(false);

            BaseTypeDeclarationSyntax node = GetClassTypeNode(rootNode);

            if (node == null)
            {
                return(document);
            }

            // if the context is not in a class, return the Document
            ClassDeclarationSyntax nodeClassConceiler = node.AncestorsAndSelf().OfType <ClassDeclarationSyntax>().Single();

            if (nodeClassConceiler == null)
            {
                return(document);
            }

            // First, remove all but the first MainModifier
            while (HasMoreThanOneMainModifier(node))
            {
                // Remove the last MainModifier
                rootNode = rootNode.ReplaceToken(GetLastMainModifier(node), SyntaxFactory.Token(SyntaxKind.None));
                node     = GetClassTypeNode(rootNode);
            }

            // Second, replace the MainModifier with the NewModifiers
            rootNode = rootNode.ReplaceToken(node.Modifiers.First(), _context.NewModifiers);

            // Cleanup additional modifiers (ie. "internal" left behind)
            return(document.WithSyntaxRoot(rootNode));
        }