public static void ComputeRefactoring(RefactoringContext context, MemberDeclarationListSelection selectedMembers) { if (selectedMembers.Count <= 1) { return; } SyntaxListSelection <MemberDeclarationSyntax> .Enumerator en = selectedMembers.GetEnumerator(); if (!en.MoveNext()) { return; } TextSpan span = context.Span; string refactoringId = GetRefactoringId(en.Current); if (refactoringId == null) { return; } while (en.MoveNext()) { if (refactoringId != GetRefactoringId(en.Current)) { return; } } if (refactoringId == RefactoringIdentifiers.UseExpressionBodiedMember && context.IsRefactoringEnabled(RefactoringIdentifiers.UseExpressionBodiedMember)) { context.RegisterRefactoring( UseExpressionBodiedMemberRefactoring.Title, ct => UseExpressionBodiedMemberRefactoring.RefactorAsync(context.Document, selectedMembers, ct), RefactoringIdentifiers.UseExpressionBodiedMember); } else if (context.IsRefactoringEnabled(RefactoringIdentifiers.ExpandExpressionBody)) { context.RegisterRefactoring( ExpandExpressionBodyRefactoring.Title, ct => ExpandExpressionBodyRefactoring.RefactorAsync(context.Document, selectedMembers, ct), RefactoringIdentifiers.ExpandExpressionBody); } }
public static async Task ComputeRefactoringsAsync(RefactoringContext context, ArrowExpressionClauseSyntax arrowExpressionClause) { ExpressionSyntax expression = arrowExpressionClause.Expression; if (expression != null && context.IsAnyRefactoringEnabled( RefactoringIdentifiers.AddBooleanComparison, RefactoringIdentifiers.ChangeMemberTypeAccordingToReturnExpression, RefactoringIdentifiers.AddCastExpression, RefactoringIdentifiers.CallToMethod)) { await ReturnExpressionRefactoring.ComputeRefactoringsAsync(context, expression).ConfigureAwait(false); } if (context.IsRefactoringEnabled(RefactoringIdentifiers.ExpandExpressionBody) && (context.Span.IsEmptyAndContainedInSpan(arrowExpressionClause) || context.Span.IsBetweenSpans(expression)) && ExpandExpressionBodyRefactoring.CanRefactor(arrowExpressionClause)) { context.RegisterRefactoring( "Expand expression body", cancellationToken => ExpandExpressionBodyRefactoring.RefactorAsync(context.Document, arrowExpressionClause, cancellationToken)); } }