diff --git a/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs b/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs index da16d0261c..e0447c36cb 100644 --- a/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs +++ b/src/OmniSharp.Roslyn.CSharp/Services/Signatures/SignatureHelpService.cs @@ -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; @@ -119,13 +118,13 @@ private async Task 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()); diff --git a/tests/OmniSharp.Roslyn.CSharp.Tests/SignatureHelpFacts.cs b/tests/OmniSharp.Roslyn.CSharp.Tests/SignatureHelpFacts.cs index 8324310fe7..bfea0873a2 100644 --- a/tests/OmniSharp.Roslyn.CSharp.Tests/SignatureHelpFacts.cs +++ b/tests/OmniSharp.Roslyn.CSharp.Tests/SignatureHelpFacts.cs @@ -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 GetSignatureHelp(string filename, string source) { var testFile = new TestFile(filename, source);