Browse Source

Fix cancellation in CaretReferenceHighlightRenderer.

pull/478/head
Daniel Grunwald 11 years ago
parent
commit
7d968cd0d0
  1. 9
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CaretReferenceHighlightRenderer.cs

9
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CaretReferenceHighlightRenderer.cs

@ -147,12 +147,15 @@ namespace CSharpBinding @@ -147,12 +147,15 @@ namespace CSharpBinding
timer.Start();
}
void ResolveAtCaret()
async void ResolveAtCaret()
{
timer.Stop();
caretMovementTokenSource = new CancellationTokenSource();
var rr = SD.ParserService.Resolve(editor.FileName, editor.Caret.Location, editor.Document, cancellationToken: caretMovementTokenSource.Token);
try {
var rr = await SD.ParserService.ResolveAsync(editor.FileName, editor.Caret.Location, editor.Document, cancellationToken: caretMovementTokenSource.Token);
SetCurrentSymbol(rr.GetSymbol());
} catch (OperationCanceledException) {
}
}
IResolveVisitorNavigator InitNavigator(ICompilation compilation)
@ -199,7 +202,7 @@ namespace CSharpBinding @@ -199,7 +202,7 @@ namespace CSharpBinding
void VisitVisibleNodes(AstNode node, IResolveVisitorNavigator currentNavigator, CSharpAstResolver resolver, int start, int end)
{
if (!CSharpAstResolver.IsUnresolvableNode(node))
currentNavigator.Resolved(node, resolver.Resolve(node, caretMovementTokenSource.Token));
currentNavigator.Resolved(node, resolver.Resolve(node));
for (var child = node.FirstChild; child != null; child = child.NextSibling) {
if (child.StartLocation.Line <= end && child.EndLocation.Line >= start)
VisitVisibleNodes(child, currentNavigator, resolver, start, end);

Loading…
Cancel
Save