From 74ab0ec89ec111db0cb56c984d9fdace12dc7bcb Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Tue, 7 Jan 2014 23:49:46 +0100 Subject: [PATCH] fix #267 --- .../Refactoring/CSharpCodeActionProviderDoozer.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeActionProviderDoozer.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeActionProviderDoozer.cs index 8857925b06..cb4c12b2a7 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeActionProviderDoozer.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeActionProviderDoozer.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using ICSharpCode.SharpDevelop; using CSharpBinding.Parser; using ICSharpCode.Core; using ICSharpCode.NRefactory.CSharp; @@ -93,11 +94,17 @@ namespace CSharpBinding.Refactoring int selectionLength = editor.SelectionLength; return Task.Run( async delegate { - if (!CreateCodeActionProvider()) + try { + if (!CreateCodeActionProvider()) + return new IContextAction[0]; + CSharpAstResolver resolver = await context.GetAstResolverAsync().ConfigureAwait(false); + var refactoringContext = new SDRefactoringContext(context.TextSource, resolver, context.CaretLocation, selectionStart, selectionLength, cancellationToken); + return codeActionProvider.GetActions(refactoringContext).Select(Wrap).ToArray(); + } catch (Exception ex) { + SD.Log.WarnFormatted("CSharpContextActionProviderWrapper crashed: {0}", ex); + SD.AnalyticsMonitor.TrackException(ex); return new IContextAction[0]; - CSharpAstResolver resolver = await context.GetAstResolverAsync().ConfigureAwait(false); - var refactoringContext = new SDRefactoringContext(context.TextSource, resolver, context.CaretLocation, selectionStart, selectionLength, cancellationToken); - return codeActionProvider.GetActions(refactoringContext).Select(Wrap).ToArray(); + } }, cancellationToken); }