Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/FsAutoComplete/LspHelpers.fs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ module Conversions =


let fcsRangeToLspLocation (range: FcsRange) : LspLocation =
// let range = range.ApplyLineDirectives() // Possibly for F# 10.0 (rc1 or later)
let fileUri = Path.FilePathToUri range.FileName
let lspRange = fcsRangeToLsp range
{ Uri = fileUri; Range = lspRange }
Expand Down
30 changes: 30 additions & 0 deletions test/FsAutoComplete.Tests.Lsp/GoToTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,36 @@ let private gotoTest state =
| U2.C1(_) -> failwith "Not Implemented"
})

testCaseAsync
"Go-to-definition-with-line-directive"
(async {
let! server, path, _externalPath, _definitionPath = server

let p: DefinitionParams =
{ TextDocument = { Uri = Path.FilePathToUri path }
Position = { Line = 16u; Character = 24u }
WorkDoneToken = None
PartialResultToken = None }

let! res = server.TextDocumentDefinition p

match res with
| Result.Error e -> failtestf "Request failed: %A" e
| Result.Ok None -> failtest "Request none"
| Result.Ok(Some res) ->
match res with
| U2.C2 _ -> failtest "Should be single GotoResult"
| U2.C1(U2.C1 res) ->
Expect.stringContains res.Uri "Definition.fs" "Result should be in Definition.fs"

Expect.equal
res.Range
{ Start = { Line = 15u; Character = 4u }
End = { Line = 15u; Character = 13u } }
"Result should have correct range (line directives not applied)"
| U2.C1(_) -> failwith "Not Implemented"
})

testCaseAsync
"Go-to-definition on custom type binding"
(async {
Expand Down
13 changes: 9 additions & 4 deletions test/FsAutoComplete.Tests.Lsp/TestCases/GoToTests/Definition.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@ module Definitions

let sample_value = 123

type A = {x: int; y: int}
type A = { x: int; y: int }

let value_with_type = {x = 123; y = 456}
let value_with_type = { x = 123; y = 456 }

type IInterface =
abstract member C : int -> int
abstract member D : int -> int
abstract member C: int -> int
abstract member D: int -> int

let generatorValue = 42

#line "13"
let generated = 42
19 changes: 10 additions & 9 deletions test/FsAutoComplete.Tests.Lsp/TestCases/GoToTests/Library.fs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ let z = Definitions.sample_value

let x = Definitions.value_with_type

let v = {
new Definitions.IInterface with
member __.C(a) = 123
member __.D(a) = 123
}
let v =
{ new Definitions.IInterface with
member __.C(a) = 123
member __.D(a) = 123 }

type Abc () =
interface Definitions.IInterface with
member __.C(a) = 123
member __.D(a) = 123
type Abc() =
interface Definitions.IInterface with
member __.C(a) = 123
member __.D(a) = 123

let s = Definitions.generated
Loading