Arbel.ReSharper.ConfigureAwaitPlugin.QuickFix.ConsiderUsingConfigureAwaitBulbItem.Execute C# (CSharp) Method

Execute() public method

public Execute ( ISolution solution, ITextControl textControl ) : void
solution ISolution
textControl ITextControl
return void
        public void Execute(ISolution solution, ITextControl textControl)
        {
            if (!_literalExpression.IsValid())
                return;

            var containingFile = _literalExpression.GetContainingFile();
            var psiModule = _literalExpression.GetPsiModule();
            var elementFactory = CSharpElementFactory.GetInstance(psiModule);
            
            IExpression newExpression = null;
            _literalExpression.GetPsiServices().Transactions.Execute(GetType().Name, () =>
            {
                using (solution.GetComponent<IShellLocks>().UsingWriteLock())
                    newExpression = ModificationUtil.ReplaceChild(
                      _literalExpression.Task, elementFactory.CreateExpression("$0.ConfigureAwait($1)", _literalExpression.Task, 
                        elementFactory.CreateExpressionByConstantValue(CSharpConstantValueFactory.CreateBoolValue(_value, psiModule))));
            });

            if (newExpression != null)
            {
                IRangeMarker marker = newExpression.GetDocumentRange().CreateRangeMarker(solution.GetComponent<DocumentManager>());
                containingFile.OptimizeImportsAndRefs(marker, false, true, NullProgressIndicator.Instance);
            }
        }
    }