Exemplo n.º 1
0
        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);
            }
        }