From 78802dd3317937063211fd961bb3af6374ee50c6 Mon Sep 17 00:00:00 2001 From: cartermp Date: Mon, 18 Dec 2017 10:19:39 -0800 Subject: [PATCH 1/2] Fix IndexOutOfRange in check for providing completion: --- .../src/FSharp.Editor/Completion/CompletionProvider.fs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs index ee47b94e085..b5da2f6bb24 100644 --- a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs +++ b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs @@ -85,10 +85,9 @@ type internal FSharpCompletionProvider else let triggerPosition = caretPosition - 1 let triggerChar = sourceText.[triggerPosition] - let prevChar = sourceText.[triggerPosition - 1] - + // do not trigger completion if it's not single dot, i.e. range expression - if not Settings.IntelliSense.ShowAfterCharIsTyped && prevChar = '.' then + if not Settings.IntelliSense.ShowAfterCharIsTyped && triggerPosition > 0 && sourceText.[triggerPosition - 1] = '.' then false else let documentId, filePath, defines = getInfo() From b9a9b328f6b1178cf818594eb7522f8b480e07a6 Mon Sep 17 00:00:00 2001 From: cartermp Date: Mon, 18 Dec 2017 11:39:42 -0800 Subject: [PATCH 2/2] Add test --- .../tests/unittests/CompletionProviderTests.fs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vsintegration/tests/unittests/CompletionProviderTests.fs b/vsintegration/tests/unittests/CompletionProviderTests.fs index 6a6c64f44b1..5e0212f62bd 100644 --- a/vsintegration/tests/unittests/CompletionProviderTests.fs +++ b/vsintegration/tests/unittests/CompletionProviderTests.fs @@ -273,6 +273,18 @@ xVal**y let triggered = FSharpCompletionProvider.ShouldTriggerCompletionAux(SourceText.From(fileContents), caretPosition, CompletionTriggerKind.Insertion, getInfo) Assert.IsTrue(triggered, "Completion should trigger after typing an identifier that follows a mathematical operation") +[] +let ShouldTriggerCompletionAtStartOfFileWithInsertion = + let fileContents = """ +l""" + + let marker = "l" + let caretPosition = fileContents.IndexOf(marker) + marker.Length + let documentId = DocumentId.CreateNewId(ProjectId.CreateNewId()) + let getInfo() = documentId, filePath, [] + let triggered = FSharpCompletionProvider.ShouldTriggerCompletionAux(SourceText.From(fileContents), caretPosition, CompletionTriggerKind.Insertion, getInfo) + Assert.IsTrue(triggered, "Completion should trigger after typing an Insertion character at the top of the file, e.g. a function definition in a new script file.") + [] let ShouldDisplayTypeMembers() = let fileContents = """