public void NotifyQuickFixExecutionFailure(RewriteSessionState sessionState)
        {
            var message = FailureMessage(sessionState);
            var caption = Resources.Inspections.QuickFixes.ApplyQuickFixFailedCaption;

            _messageBox.NotifyWarn(message, caption);
        }
        public void NotifyRewriteFailed(RewriteSessionState sessionState)
        {
            var message = RewriteFailureMessage(sessionState);
            var caption = Resources.RubberduckUI.MemberAttributeRecoveryFailureCaption;

            _messageBox.NotifyWarn(message, caption);
        }
        private static string FailureMessage(RewriteSessionState sessionState)
        {
            var baseFailureMessage   = Resources.Inspections.QuickFixes.ApplyQuickFixesFailedMessage;
            var failureReasonMessage = FailureReasonMessage(sessionState);
            var message = string.IsNullOrEmpty(failureReasonMessage)
                ? baseFailureMessage
                : $"{baseFailureMessage}{Environment.NewLine}{Environment.NewLine}{failureReasonMessage}";

            return(message);
        }
        private static string RewriteFailureMessage(RewriteSessionState sessionState)
        {
            var baseFailureMessage   = Resources.RubberduckUI.MemberAttributeRecoveryRewriteFailedMessage;
            var failureReasonMessage = RewriteFailureReasonMessage(sessionState);
            var message = string.IsNullOrEmpty(failureReasonMessage)
                ? baseFailureMessage
                : $"{baseFailureMessage}{Environment.NewLine}{Environment.NewLine}{failureReasonMessage}";

            return(message);
        }
        private static string FailureReasonMessage(RewriteSessionState sessionState)
        {
            switch (sessionState)
            {
            case RewriteSessionState.StaleParseTree:
                return(Resources.Inspections.QuickFixes.StaleModuleFailureReason);

            default:
                return(string.Empty);
            }
        }
        public IModuleRewriter CheckOutModuleRewriter(QualifiedModuleName module)
        {
            if (CheckedOutModuleRewriters.TryGetValue(module, out var rewriter))
            {
                return(rewriter);
            }

            rewriter = ModuleRewriter(module);
            CheckedOutModuleRewriters.Add(module, rewriter);

            if (rewriter.IsDirty)
            {
                //The parse tree is stale.
                Status = RewriteSessionState.StaleParseTree;
            }

            return(rewriter);
        }