public override IEnumerable <MonoDevelop.CodeActions.CodeAction> GetActions(Document document, object _context, TextLocation loc, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { yield break; } var context = _context as MDRefactoringContext; if (context == null || context.IsInvalid || context.RootNode == null) { yield break; } var actions = provider.GetActions(context); if (actions == null) { LoggingService.LogWarning(provider + " returned null actions."); yield break; } int num = 0; foreach (var action_ in actions) { var action = action_; if (actionId.Count <= num) { actionId.Add(provider.GetType().FullName + "'" + num); } yield return(new NRefactoryCodeAction(actionId[num], GettextCatalog.GetString(action.Description ?? ""), action)); num++; } }
protected void TestWrongContext(CodeActionProvider action, string input) { var context = TestRefactoringContext.Create(input); context.FormattingOptions = formattingOptions; bool isValid = action.GetActions(context).Any(); if (isValid) { Console.WriteLine("valid node is:" + context.GetNode()); } Assert.IsTrue(!isValid, action.GetType() + " shouldn't be valid there."); }
protected string RunContextAction(CodeActionProvider action, string input, int actionIndex = 0, bool expectErrors = false) { var context = TestRefactoringContext.Create(input, expectErrors); context.FormattingOptions = formattingOptions; bool isValid = action.GetActions(context).Any(); if (!isValid) { Console.WriteLine("invalid node is:" + context.GetNode()); } Assert.IsTrue(isValid, action.GetType() + " is invalid."); using (var script = context.StartScript()) { action.GetActions(context).Skip(actionIndex).First().Run(script); } return(context.doc.Text); }