diff --git a/src/OmniSharp.Roslyn.CSharp/Services/InlayHints/InlayHintService.cs b/src/OmniSharp.Roslyn.CSharp/Services/InlayHints/InlayHintService.cs index d97ca73794..2a98ddd13d 100644 --- a/src/OmniSharp.Roslyn.CSharp/Services/InlayHints/InlayHintService.cs +++ b/src/OmniSharp.Roslyn.CSharp/Services/InlayHints/InlayHintService.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Collections.Immutable; using System.Composition; using System.Diagnostics.CodeAnalysis; @@ -56,8 +57,17 @@ public async Task Handle(InlayHintRequest request) return InlayHintResponse.None; } - var sourceText = await document.GetTextAsync(); - var mappedSpan = sourceText.GetSpanFromRange(request.Location.Range); + SourceText sourceText; + TextSpan mappedSpan; + try + { + sourceText = await document.GetTextAsync(); + mappedSpan = sourceText.GetSpanFromRange(request.Location.Range); + } + catch (ArgumentOutOfRangeException) + { + return InlayHintResponse.None; + } var inlayHintsOptions = _omniSharpOptions.CurrentValue.RoslynExtensionsOptions.InlayHintsOptions; var options = new OmniSharpInlineHintsOptions diff --git a/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs b/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs index e0447c36cb..74ae8a29bc 100644 --- a/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs +++ b/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Composition; using System.Linq; @@ -5,6 +6,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Text; using OmniSharp.Extensions; using OmniSharp.Mef; using OmniSharp.Models; @@ -103,8 +105,17 @@ throughExpression is LiteralExpressionSyntax || private async Task GetInvocation(Document document, Request request) { - var sourceText = await document.GetTextAsync(); - var position = sourceText.GetTextPosition(request); + SourceText sourceText; + int position; + try + { + sourceText = await document.GetTextAsync(); + position = sourceText.GetTextPosition(request); + } + catch (ArgumentOutOfRangeException) + { + return null; + } var tree = await document.GetSyntaxTreeAsync(); var root = await tree.GetRootAsync(); var node = root.FindToken(position).Parent;