private void AddStaticModifier(CodeFixContext context, Diagnostic diagnostic, SyntaxNode node, string additionalKey = null) { if (node.IsKind(SyntaxKind.ConstructorDeclaration) && ((ConstructorDeclarationSyntax)node).ParameterList?.Parameters.Any() == true) { return; } CodeAction codeAction = CodeAction.Create( "Add 'static' modifier", cancellationToken => { SyntaxNode newNode = node; if (node.IsKind(SyntaxKind.ConstructorDeclaration)) { newNode = ModifierHelper.RemoveAccessModifiers(newNode); } newNode = newNode.InsertModifier(SyntaxKind.StaticKeyword, ModifierComparer.Instance); return(context.Document.ReplaceNodeAsync(node, newNode, cancellationToken)); }, GetEquivalenceKey(diagnostic, additionalKey)); context.RegisterCodeFix(codeAction, diagnostic); }
private void RemoveAccessModifiers(CodeFixContext context, Diagnostic diagnostic, SyntaxNode node) { SyntaxTokenList modifiers = node.GetModifiers(); var accessModifier = default(SyntaxToken); foreach (SyntaxToken modifier in modifiers) { if (modifier.IsAccessModifier()) { if (accessModifier.IsAccessModifier()) { accessModifier = default(SyntaxToken); break; } else { accessModifier = modifier; } } } if (accessModifier.IsAccessModifier()) { RemoveModifier(context, diagnostic, node, accessModifier); } else { CodeAction codeAction = CodeAction.Create( "Remove accessibility modifiers", cancellationToken => { SyntaxNode newNode = ModifierHelper.RemoveAccessModifiers(node); return(context.Document.ReplaceNodeAsync(node, newNode, cancellationToken)); }, GetEquivalenceKey(diagnostic)); context.RegisterCodeFix(codeAction, diagnostic); } }