public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { SyntaxNode root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); SyntaxToken closeParen = root.FindToken(context.Span.Start); if (!closeParen.IsKind(SyntaxKind.CloseParenToken)) { return; } if (!context.Document.SupportsSemanticModel) { return; } if (context.Span.Start == 0) { return; } if (closeParen.Parent?.IsKind(SyntaxKind.ParameterList) == true) { ParameterSyntax parameter = root .FindNode(new TextSpan(context.Span.Start - 1, 1))? .FirstAncestorOrSelf <ParameterSyntax>(); if (parameter == null) { return; } SemanticModel semanticModel = await context.Document.GetSemanticModelAsync(context.CancellationToken); RenameParameterAccordingToTypeNameRefactoring.Refactor(context, parameter, semanticModel); AddParameterNullCheckRefactoring.Refactor(context, parameter, semanticModel); } }
public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { SyntaxNode root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); ParameterSyntax parameter = root .FindNode(context.Span, getInnermostNodeForTie: true)? .FirstAncestorOrSelf <ParameterSyntax>(); if (parameter == null) { return; } if (context.Document.SupportsSemanticModel) { SemanticModel semanticModel = await context.Document.GetSemanticModelAsync(context.CancellationToken); RenameParameterAccordingToTypeNameRefactoring.Refactor(context, parameter, semanticModel); AddParameterNullCheckRefactoring.Refactor(context, parameter, semanticModel); } }