Skip to content

Commit 19bc8e5

Browse files
authored
add test for line directive (#1417)
1 parent 20167d6 commit 19bc8e5

File tree

4 files changed

+50
-13
lines changed

4 files changed

+50
-13
lines changed

src/FsAutoComplete/LspHelpers.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ module Conversions =
5858

5959

6060
let fcsRangeToLspLocation (range: FcsRange) : LspLocation =
61+
// let range = range.ApplyLineDirectives() // Possibly for F# 10.0 (rc1 or later)
6162
let fileUri = Path.FilePathToUri range.FileName
6263
let lspRange = fcsRangeToLsp range
6364
{ Uri = fileUri; Range = lspRange }

test/FsAutoComplete.Tests.Lsp/GoToTests.fs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,36 @@ let private gotoTest state =
157157
| U2.C1(_) -> failwith "Not Implemented"
158158
})
159159

160+
testCaseAsync
161+
"Go-to-definition-with-line-directive"
162+
(async {
163+
let! server, path, _externalPath, _definitionPath = server
164+
165+
let p: DefinitionParams =
166+
{ TextDocument = { Uri = Path.FilePathToUri path }
167+
Position = { Line = 16u; Character = 24u }
168+
WorkDoneToken = None
169+
PartialResultToken = None }
170+
171+
let! res = server.TextDocumentDefinition p
172+
173+
match res with
174+
| Result.Error e -> failtestf "Request failed: %A" e
175+
| Result.Ok None -> failtest "Request none"
176+
| Result.Ok(Some res) ->
177+
match res with
178+
| U2.C2 _ -> failtest "Should be single GotoResult"
179+
| U2.C1(U2.C1 res) ->
180+
Expect.stringContains res.Uri "Definition.fs" "Result should be in Definition.fs"
181+
182+
Expect.equal
183+
res.Range
184+
{ Start = { Line = 15u; Character = 4u }
185+
End = { Line = 15u; Character = 13u } }
186+
"Result should have correct range (line directives not applied)"
187+
| U2.C1(_) -> failwith "Not Implemented"
188+
})
189+
160190
testCaseAsync
161191
"Go-to-definition on custom type binding"
162192
(async {

test/FsAutoComplete.Tests.Lsp/TestCases/GoToTests/Definition.fs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,15 @@ module Definitions
22

33
let sample_value = 123
44

5-
type A = {x: int; y: int}
5+
type A = { x: int; y: int }
66

7-
let value_with_type = {x = 123; y = 456}
7+
let value_with_type = { x = 123; y = 456 }
88

99
type IInterface =
10-
abstract member C : int -> int
11-
abstract member D : int -> int
10+
abstract member C: int -> int
11+
abstract member D: int -> int
12+
13+
let generatorValue = 42
14+
15+
#line "13"
16+
let generated = 42

test/FsAutoComplete.Tests.Lsp/TestCases/GoToTests/Library.fs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ let z = Definitions.sample_value
44

55
let x = Definitions.value_with_type
66

7-
let v = {
8-
new Definitions.IInterface with
9-
member __.C(a) = 123
10-
member __.D(a) = 123
11-
}
7+
let v =
8+
{ new Definitions.IInterface with
9+
member __.C(a) = 123
10+
member __.D(a) = 123 }
1211

13-
type Abc () =
14-
interface Definitions.IInterface with
15-
member __.C(a) = 123
16-
member __.D(a) = 123
12+
type Abc() =
13+
interface Definitions.IInterface with
14+
member __.C(a) = 123
15+
member __.D(a) = 123
16+
17+
let s = Definitions.generated

0 commit comments

Comments
 (0)