public static ConstructorDeclarationSyntax AddStaticModifier(ConstructorDeclarationSyntax constructorDeclaration) { SyntaxTokenList modifiers = constructorDeclaration.Modifiers; if (!modifiers.Contains(SyntaxKind.StaticKeyword)) { SyntaxTokenList newModifiers = modifiers; if (modifiers.ContainsAccessModifier()) { newModifiers = modifiers.RemoveAccessModifiers(); if (newModifiers.Any()) { newModifiers = newModifiers.ReplaceAt(0, newModifiers[0].WithLeadingTrivia(modifiers[0].LeadingTrivia)); newModifiers = Inserter.InsertModifier(newModifiers, SyntaxKind.StaticKeyword); } else { newModifiers = Inserter.InsertModifier(newModifiers, CSharpFactory.StaticKeyword().WithLeadingTrivia(modifiers[0].LeadingTrivia)); } } else { newModifiers = Inserter.InsertModifier(newModifiers, SyntaxKind.StaticKeyword); } return(constructorDeclaration.WithModifiers(newModifiers)); } else { return(constructorDeclaration); } }
private static Accessibility GetAccessModifier(SyntaxNodeAnalysisContext context, MemberDeclarationSyntax declaration, SyntaxTokenList modifiers) { if (!modifiers.ContainsAccessModifier()) { if (modifiers.Any(SyntaxKind.PartialKeyword)) { if (!declaration.IsKind(SyntaxKind.MethodDeclaration)) { Accessibility?accessibility = GetPartialAccessModifier(context, declaration); if (accessibility != null) { if (accessibility == Accessibility.NotApplicable) { return(declaration.GetDefaultExplicitAccessibility()); } else { return(accessibility.Value); } } } } else { return(declaration.GetDefaultExplicitAccessibility()); } } return(Accessibility.NotApplicable); }
private static void AddDefaultAccessModifier(SyntaxNodeAnalysisContext context, SyntaxTokenList modifiers) { if (context.Node.IsKind(SyntaxKind.OperatorDeclaration)) { return; } //TODO: check access modifier for partial class, struct, interface if (modifiers.Any(SyntaxKind.PartialKeyword)) { return; } if (modifiers.ContainsAccessModifier()) { return; } if (!IsAccessModifierRequired(context)) { return; } Location location = GetLocation(context.Node); if (location == null) { return; } context.ReportDiagnostic(DiagnosticDescriptors.AddAccessModifier, location); }
private static void ReportDiagnostic( SyntaxNodeAnalysisContext context, MemberDeclarationSyntax memberDeclaration, SyntaxTokenList modifiers, SyntaxToken token) { if (!memberDeclaration.ContainsDirectives(modifiers.Span)) { if (!modifiers.ContainsAccessModifier() || memberDeclaration.GetDeclaredAccessibility() != Accessibility.ProtectedOrInternal || AreTokensNextToEachOther(modifiers, SyntaxKind.ProtectedKeyword, SyntaxKind.InternalKeyword)) { context.ReportDiagnostic( DiagnosticDescriptors.OverridingMemberCannotChangeAccessModifiers, token); } } }
public static ConstructorDeclarationSyntax AddStaticModifier(ConstructorDeclarationSyntax constructorDeclaration) { if (constructorDeclaration == null) { throw new ArgumentNullException(nameof(constructorDeclaration)); } SyntaxTokenList modifiers = constructorDeclaration.Modifiers; if (!modifiers.Contains(SyntaxKind.StaticKeyword)) { SyntaxTokenList newModifiers = modifiers; if (modifiers.ContainsAccessModifier()) { newModifiers = modifiers.RemoveAccessModifiers(); if (newModifiers.Any()) { newModifiers = newModifiers.ReplaceAt(0, newModifiers[0].WithLeadingTrivia(modifiers[0].LeadingTrivia)); newModifiers = newModifiers.InsertModifier(SyntaxKind.StaticKeyword, ModifierComparer.Instance); } else { newModifiers = newModifiers.InsertModifier(CSharpFactory.StaticKeyword().WithLeadingTrivia(modifiers[0].LeadingTrivia), ModifierComparer.Instance); } } else { newModifiers = newModifiers.InsertModifier(SyntaxKind.StaticKeyword, ModifierComparer.Instance); } return(constructorDeclaration.WithModifiers(newModifiers)); } else { return(constructorDeclaration); } }