private static SyntaxNode MakeSingleFieldReadonly(SyntaxNode root, FieldDeclarationSyntax fieldDeclaration) { var newFieldDeclaration = fieldDeclaration.AddModifiers(SyntaxFactory.Token(SyntaxKind.ReadOnlyKeyword)) .WithTrailingTrivia(fieldDeclaration.GetTrailingTrivia()) .WithLeadingTrivia(fieldDeclaration.GetLeadingTrivia()) .WithAdditionalAnnotations(Formatter.Annotation); var newRoot = root.ReplaceNode(fieldDeclaration, newFieldDeclaration); return newRoot; }
private async Task<Document> MakePrivateAsync(Document document, FieldDeclarationSyntax fieldDeclaration, CancellationToken cancellationToken) { SyntaxToken privateSyntaxToken = CreatePrivateSyntaxToken(fieldDeclaration); IEnumerable<SyntaxToken> newFieldModifiers = new[] { privateSyntaxToken }.Union( fieldDeclaration.Modifiers.Where(modifier => modifier.Kind() != SyntaxKind.InternalKeyword && modifier.Kind() != SyntaxKind.PublicKeyword) .Select(modifier => modifier.WithLeadingTrivia())); FieldDeclarationSyntax newfieldDeclaration = fieldDeclaration.Update(fieldDeclaration.AttributeLists, new SyntaxTokenList().AddRange(newFieldModifiers), fieldDeclaration.Declaration.WithoutTrivia(), fieldDeclaration.SemicolonToken) .WithLeadingTrivia(fieldDeclaration.GetLeadingTrivia()) .WithTrailingTrivia(fieldDeclaration.GetTrailingTrivia()); return await this.ReplaceNodeInDocumentAsync(document, cancellationToken, fieldDeclaration, newfieldDeclaration); }
private async Task<Document> InternalStaticAsync(Document document, FieldDeclarationSyntax declaration, CancellationToken c) { SyntaxGenerator generator = SyntaxGenerator.GetGenerator(document); var newFieldDecl = generator.FieldDeclaration(declaration.Declaration.Variables[0].Identifier.Text, generator.IdentifierName("DiagnosticDescriptor"), accessibility: Accessibility.Internal, modifiers: DeclarationModifiers.Static, initializer: declaration.Declaration.Variables[0].Initializer.Value as SyntaxNode).WithLeadingTrivia(declaration.GetLeadingTrivia()).WithTrailingTrivia(declaration.GetTrailingTrivia()); return await ReplaceNode(declaration, newFieldDecl, document); }
private Variables TransverseVariables(FieldDeclarationSyntax fds, bool isRef = false) { Variables retVar = new Variables(); if (fds.HasLeadingTrivia) { SetOuterComments(retVar, fds.GetLeadingTrivia().ToFullString()); } if (fds.HasTrailingTrivia) { SetInnerComments(retVar, fds.GetTrailingTrivia().ToFullString()); } retVar.IsReferenced = isRef; //Not sure if right retVar.Type.IsKnownType = SyntaxFacts.IsKeywordKind(fds.CSharpKind()); retVar.Type.IsNotUserDefined = SyntaxFacts.IsKeywordKind(fds.CSharpKind()); //This should pick up the "type" name retVar.Type.Name = fds.Declaration.Type.ToString(); foreach (SyntaxToken st in fds.Modifiers) { string modifier = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(st.ValueText); Encapsulation encap; Qualifiers qual; if (System.Enum.TryParse<Encapsulation>(modifier, out encap)) { retVar.Accessibility.Add(encap); } else if (System.Enum.TryParse<Qualifiers>(modifier, out qual)) { retVar.Qualifiers.Add(qual); } } //This does return variable name but I don't know if fds can contain a list of //variables or if it will always be 1 retVar.Name = fds.Declaration.Variables.ToString(); return retVar; }