diff --git a/src/Microsoft.SqlTools.ServiceLayer/LanguageServices/Completion/SqlCompletionItem.cs b/src/Microsoft.SqlTools.ServiceLayer/LanguageServices/Completion/SqlCompletionItem.cs index 076669d5..e52f5fb9 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/LanguageServices/Completion/SqlCompletionItem.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/LanguageServices/Completion/SqlCompletionItem.cs @@ -74,8 +74,11 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices.Completion case DeclarationType.BuiltInFunction: case DeclarationType.ScalarValuedFunction: case DeclarationType.TableValuedFunction: - // Functions we add on the () at the end since they'll always have them - InsertText = WithDelimitedIdentifier(FunctionPostfix, DeclarationTitle); + // Add ()'s for all functions except global variable system functions (which all start with @@) + if (!DeclarationTitle.StartsWith("@@")) + { + InsertText = WithDelimitedIdentifier(FunctionPostfix, DeclarationTitle); + } break; } } diff --git a/test/Microsoft.SqlTools.ServiceLayer.UnitTests/LanguageServer/SqlCompletionItemTests.cs b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/LanguageServer/SqlCompletionItemTests.cs index a9d9492a..6e90d43c 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.UnitTests/LanguageServer/SqlCompletionItemTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/LanguageServer/SqlCompletionItemTests.cs @@ -263,6 +263,20 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.LanguageServer } + [Fact] + public void GlobalVariableSystemFunctionsShouldNotHaveParenthesesAdded() + { + string declarationTitle = "@@CONNECTIONS"; + string tokenText = ""; + SqlCompletionItem item = new SqlCompletionItem(declarationTitle, DeclarationType.BuiltInFunction, tokenText); + CompletionItem completionItem = item.CreateCompletionItem(0, 1, 2); + + Assert.Equal(declarationTitle, completionItem.Label); + Assert.Equal($"{declarationTitle}", completionItem.InsertText); + Assert.Equal(declarationTitle, completionItem.Detail); + + } + [Theory] [InlineData(DeclarationType.Server)] [InlineData(DeclarationType.Database)]