示例#1
0
        protected override async Task RegisterCodeFixesAsync(DocumentEditorCodeFixContext context)
        {
            var syntaxRoot = await context.Document.GetSyntaxRootAsync(context.CancellationToken)
                             .ConfigureAwait(false);

            foreach (var diagnostic in context.Diagnostics)
            {
                if (syntaxRoot.TryFindNodeOrAncestor <ClassDeclarationSyntax>(diagnostic, out var classDeclaration) &&
                    diagnostic.Properties.TryGetValue(nameof(AttributeListSyntax), out var attribute))
                {
                    context.RegisterCodeFix(
                        $"Add {attribute}.",
                        (e, _) => e.ReplaceNode(
                            classDeclaration,
                            x => x.WithLeadingElasticLineFeed().AddAttributeLists(Parse.AttributeList(attribute).WithLeadingTrivia(SyntaxFactory.ElasticSpace).WithSimplifiedNames())),
                        attribute,
                        diagnostic);
                }
            }
        }
示例#2
0
        public static void AttributeList(string code)
        {
            var node = Parse.AttributeList(code);

            Assert.AreEqual(code + "\r\n", node.ToFullString());
        }