Skip to content

Commit

Permalink
Merge pull request #2327 from TimHolzherr/bugfix/null-reference-excep…
Browse files Browse the repository at this point in the history
…tion-in-signature-help-service

Fix null reference exception in SignatureHelpService
  • Loading branch information
filipw authored Feb 10, 2022
2 parents 0d8bccc + 9abcf8c commit e0dda20
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
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;
Expand Down Expand Up @@ -119,13 +118,13 @@ private async Task<InvocationContext> GetInvocation(Document document, Request r
return new InvocationContext(semanticModel, position, invocation.Expression, invocation.ArgumentList, invocation.IsInStaticContext());
}

if (node is BaseObjectCreationExpressionSyntax objectCreation && objectCreation.ArgumentList.Span.Contains(position))
if (node is BaseObjectCreationExpressionSyntax objectCreation && (objectCreation.ArgumentList?.Span.Contains(position) ?? false))
{
var semanticModel = await document.GetSemanticModelAsync();
return new InvocationContext(semanticModel, position, objectCreation, objectCreation.ArgumentList, objectCreation.IsInStaticContext());
}

if (node is AttributeSyntax attributeSyntax && attributeSyntax.ArgumentList.Span.Contains(position))
if (node is AttributeSyntax attributeSyntax && (attributeSyntax.ArgumentList?.Span.Contains(position) ?? false))
{
var semanticModel = await document.GetSemanticModelAsync();
return new InvocationContext(semanticModel, position, attributeSyntax, attributeSyntax.ArgumentList, attributeSyntax.IsInStaticContext());
Expand Down
18 changes: 18 additions & 0 deletions tests/OmniSharp.Roslyn.CSharp.Tests/SignatureHelpFacts.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1107,6 +1107,24 @@ public static void Main()
Assert.Equal("int n", signature.Parameters.ElementAt(0).Label);
}

[Fact]
public async Task BaseObjectCreationWithoutArguments()
{
const string source =
@"public static class Foo {
public static string GetClientCredentialsToken() {
AccessTokenRequest request = new AccessTokenRequest {
client$$Id = ""foo"",
}
}
}
";

var actual = await GetSignatureHelp("dummy.cs", source);

Assert.Null(actual);
}

private async Task<SignatureHelpResponse> GetSignatureHelp(string filename, string source)
{
var testFile = new TestFile(filename, source);
Expand Down

0 comments on commit e0dda20

Please sign in to comment.