Skip to content
Open
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
32 changes: 15 additions & 17 deletions tests/FSharp.Compiler.Service.Tests/BreakpointLocationTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,53 +5,51 @@ open FSharp.Compiler.Text.Range
open FSharp.Test.Assert
open Xunit

let assertBreakpointRange ((startLine, startCol), (endLine, endCol)) markedSource =
let assertBreakpointRange markedSource =
let context, parseResults = Checker.getParseResultsWithContext markedSource
let breakpointRange = parseResults.ValidateBreakpointLocation(context.CaretPos).Value

let startPos = Position.mkPos startLine startCol
let endPod = Position.mkPos endLine endCol
let expectedRange = mkFileIndexRange breakpointRange.FileIndex startPos endPod
let selected = context.SelectedRange.Value
let expectedRange = mkFileIndexRange breakpointRange.FileIndex selected.Start selected.End

breakpointRange |> shouldEqual expectedRange

[<Fact>]
let ``Let - Function - Body 01`` () =
assertBreakpointRange ((3, 4), (3, 5)) """
assertBreakpointRange """
let f () =
1{caret}
{selstart}1{selend}
"""

[<Fact>]
let ``Seq 01`` () =
assertBreakpointRange ((3, 4), (3, 5)) """
assertBreakpointRange """
do
1{caret}
{selstart}1{selend}
2
"""

[<Fact>]
let ``Seq 02`` () =
assertBreakpointRange ((4, 4), (4, 5)) """
assertBreakpointRange """
do
1
2{caret}
{selstart}2{selend}
"""

[<Fact>]
let ``Lambda 01`` () =
assertBreakpointRange ((2, 27), (2, 35)) """
[""] |> List.map (fun s -> s.Lenght{caret})
assertBreakpointRange """
[""] |> List.map (fun s -> {selstart}s.Lenght{selend})
"""

[<Fact>]
let ``Dot lambda 01`` () =
assertBreakpointRange ((2, 17), (2, 25)) """
[""] |> List.map _.Lenght{caret}
assertBreakpointRange """
[""] |> List.map {selstart}_.Lenght{selend}
"""

[<Fact>]
let ``Dot lambda 02`` () =
assertBreakpointRange ((2, 17), (2, 36)) """
[""] |> List.map _.ToString().Length{caret}
assertBreakpointRange """
[""] |> List.map {selstart}_.ToString().Length{selend}
"""
Original file line number Diff line number Diff line change
Expand Up @@ -34,36 +34,20 @@ let test3 = fffff ggggg ggggg"""

assertHasItemWithNames [ "fffff" ] info

[<Theory>]
[<InlineData("""let fffff x y = 1
let ggggg = 1
let test1 = f{caret}ffff "a" ggggg
let test2 = fffff 1 ggggg
let test3 = fffff ggggg ggggg""", "fffff")>]
[<InlineData("""let fffff x y = 1
let ggggg = 1
let test1 = fffff "a" gg{caret}ggg
let test2 = fffff 1 ggggg
let test3 = fffff ggggg ggggg""", "ggggg")>]
[<InlineData("""let fffff x y = 1
let ggggg = 1
let test1 = fffff "a" ggggg
let test2 = fffff 1 gg{caret}ggg
let test3 = fffff ggggg ggggg""", "ggggg")>]
[<InlineData("""let fffff x y = 1
let ggggg = 1
let test1 = fffff "a" ggggg
let test2 = fffff 1 ggggg
let test3 = fffff gg{caret}ggg ggggg""", "ggggg")>]
[<InlineData("""let fffff x y = 1
[<Fact>]
let ``CurriedArguments.Regression`` () =
let sources =
SourceContext.extractOrderedMarkedSources
"""let fffff x y = 1
let ggggg = 1
let test1 = fffff "a" ggggg
let test2 = fffff 1 ggggg
let test3 = fffff ggggg gg{caret}ggg""", "ggggg")>]
let ``CurriedArguments.Regression`` (markedSource: string) (expected: string) =
let info = Checker.getCompletionInfo markedSource

assertHasItemWithNames [ expected ] info
let test1 = f{caret1}ffff "a" gg{caret2}ggg
let test2 = fffff 1 gg{caret3}ggg
let test3 = fffff gg{caret4}ggg gg{caret5}ggg"""

List.iter2
(fun expected source -> assertHasItemWithNames [ expected ] (Checker.getCompletionInfo source))
[ "fffff"; "ggggg"; "ggggg"; "ggggg"; "ggggg" ]
sources

[<Fact>]
let ``StringFunctions`` () =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,24 +48,17 @@ type Foo() as this =

assertHasItemWithNames [ "this" ] info

[<Theory>]
[<InlineData("""
type Base(o:obj) = class end
type Foo() as this =
inherit Base(this) // this
let o = th{caret}is // this ok
do this.Bar() // this ok, dotting ok
member this.Bar() = ()""")>]
[<InlineData("""
[<Fact>]
let ``GenericType.Self.Bug69673_1.CtrlSpaceForThis`` () =
"""
type Base(o:obj) = class end
type Foo() as this =
inherit Base(this) // this
let o = this // this ok
do th{caret}is.Bar() // this ok, dotting ok
member this.Bar() = ()""")>]
let ``GenericType.Self.Bug69673_1.CtrlSpaceForThis`` (markedSource: string) =
let info = Checker.getCompletionInfo markedSource
assertHasItemWithNames [ "this" ] info
let o = th{caret1}is // this ok
do th{caret2}is.Bar() // this ok, dotting ok
member this.Bar() = ()"""
|> SourceContext.extractOrderedMarkedSources
|> List.iter (fun source -> assertHasItemWithNames [ "this" ] (Checker.getCompletionInfo source))

[<Fact>]
let ``GenericType.Self.Bug69673_1.04`` () =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,26 +59,15 @@ let test1 = strs.[1].{caret}"""

assertHasItemWithNames [ "Substring"; "GetHashCode" ] info

[<Theory>]
[<InlineData("""let string_of_int (x:int) = x.ToString()
let strs = Array.init 10 string_of_int
let test2 = strs.[1..].{caret}
let test3 = strs.[..1].
let test4 = strs.[1..1].""")>]
[<InlineData("""let string_of_int (x:int) = x.ToString()
let strs = Array.init 10 string_of_int
let test2 = strs.[1..].
let test3 = strs.[..1].{caret}
let test4 = strs.[1..1].""")>]
[<InlineData("""let string_of_int (x:int) = x.ToString()
[<Fact>]
let ``DotOff.ArraySliceNotation`` () =
"""let string_of_int (x:int) = x.ToString()
let strs = Array.init 10 string_of_int
let test2 = strs.[1..].
let test3 = strs.[..1].
let test4 = strs.[1..1].{caret}""")>]
let ``DotOff.ArraySliceNotation`` (source: string) =
let info = Checker.getCompletionInfo source

assertHasItemWithNames [ "Length" ] info
let test2 = strs.[1..].{caret1}
let test3 = strs.[..1].{caret2}
let test4 = strs.[1..1].{caret3}"""
|> SourceContext.extractOrderedMarkedSources
|> List.iter (fun source -> assertHasItemWithNames [ "Length" ] (Checker.getCompletionInfo source))

[<Fact>]
let ``DotOff.DictionaryIndexer`` () =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,12 @@ open Xunit

[<Fact>]
let ``TupledArgsInLambda.Completion.Bug312557_2`` () =
let assertOffersTupleArgs (markedSource: string) =
let info = Checker.getCompletionInfo markedSource
assertHasItemWithNames [ "aaa"; "bbb" ] info

assertOffersTupleArgs
"""(1,2) |> (fun (aaa,bbb) ->
printfn "hi"
printfn "%d%d" b{caret} a
printfn "%d%d" a b ) """

assertOffersTupleArgs
"""(1,2) |> (fun (aaa,bbb) ->
printfn "hi"
printfn "%d%d" b a
printfn "%d%d" a{caret} b ) """

assertOffersTupleArgs
"""(1,2) |> (fun (aaa,bbb) ->
printfn "hi"
printfn "%d%d" b a{caret}
printfn "%d%d" a b ) """

assertOffersTupleArgs
"""(1,2) |> (fun (aaa,bbb) ->
"""(1,2) |> (fun (aaa,bbb) ->
printfn "hi"
printfn "%d%d" b a
printfn "%d%d" a b{caret} ) """
printfn "%d%d" b{caret1} a{caret3}
printfn "%d%d" a{caret2} b{caret4} ) """
|> SourceContext.extractOrderedMarkedSources
|> List.iter (fun source -> assertHasItemWithNames [ "aaa"; "bbb" ] (Checker.getCompletionInfo source))

[<Fact>]
let ``DotCompletionInPatternsPartOfLambda`` () =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
module FSharp.Compiler.Service.Tests.GotoDefinitionActivePatternsTests

open System
open Xunit

let private overlapSource =
Expand All @@ -10,13 +9,13 @@ let private overlapSource =
" type Parity = Even | Odd"
" let (|Even{caret1}|Odd|) x = (*loc-59*)"
" if x % 0 = 0"
" then Even{caret2} (*loc-60*)"
" then Even{caret2}"
" else Odd"
" let foo (x : int) ="
" match x with"
" | Even{caret3} -> 1 (*loc-61*)"
" | Even{caret3} -> 1"
" | Odd -> 0"
" let patval = (|Even{caret4}|Odd|) (*loc-61b*)" ]
" let patval = (|Even{caret4}|Odd|)" ]

[<Fact>]
let ``GotoDefinition.Simple.ActivePat`` () =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
module FSharp.Compiler.Service.Tests.GotoDefinitionClassesTests

open System
open Xunit

let private classFieldSource =
Expand All @@ -23,7 +22,7 @@ let private classSource =
" member c.Method () = () (*loc-63*)"
" static member Foo () = () (*loc-64*)"
"let _ ="
" let c = Class{caret2} () (*loc-65*)"
" let c = Class{caret2} ()"
" c.Method () (*loc-66*)"
" Class.Foo () (*loc-67*)" ]

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
module FSharp.Compiler.Service.Tests.GotoDefinitionDiscriminatedUnionsTests

open System
open Xunit

let private discUnionSource =
Expand All @@ -11,7 +10,7 @@ let private discUnionSource =
| Gamma

let valueX = Beta{caret2}(1.0M, ())(*GotoTypeDef*)
let valueY = valueX{caret1} (*GotoValDef*)
let valueY = valueX{caret1}
"""

[<Fact>]
Expand All @@ -25,20 +24,20 @@ let private simpleDatatypeSource =
String.concat
"\n"
[ "type Zero = (*loc-13*)"
"let foo (_ : Zero{caret1}) : 'a = failwith \"hi\" (*loc-14*)"
"let foo (_ : Zero{caret1}) : 'a = failwith \"hi\""
"type One{caret3} = (*loc-16*)"
" One{caret2} (*loc-15*)"
"let f (x : One{caret5}) = (*loc-17*)"
" One{caret4} (*loc-18*)"
"let f (x : One{caret5}) ="
" One{caret4}"
"type Nat{caret6} = (*loc-19*)"
" | Suc of Nat{caret7} (*loc-20*)"
" | Zro (*loc-21*)"
"let rec plus m n = (*loc-23*)"
" match m with (*loc-22*)"
" | Zro{caret8} -> (*loc-24*)"
" | Zro{caret8} ->"
" n"
" | Suc{caret9} m -> (*loc-25*)"
" Suc (plus m{caret10} n{caret11}) (*loc-26*)" ]
" Suc (plus m{caret10} n{caret11})" ]

[<Fact>]
let ``GotoDefinition.Simple.Datatype`` () =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
module FSharp.Compiler.Service.Tests.GotoDefinitionLetBindingsTests

open System
open Xunit

[<Fact>]
Expand All @@ -27,7 +26,7 @@ let private trivialLetSource =
"\n"
[ "let _ ="
" let x{caret2} = () (*loc-2*)"
" x{caret1} (*loc-1*)" ]
" x{caret1}" ]

[<Fact>]
let ``GotoDefinition.Simple.Binding.TrivialLet`` () =
Expand All @@ -40,7 +39,7 @@ let private nestedSameNameSource =
[ "let _ ="
" let x{caret3} = () (*loc-5*)"
" let x{caret2} = () (*loc-3*)"
" x{caret1} (*loc-4*)" ]
" x{caret1}" ]

[<Fact>]
let ``GotoDefinition.Simple.Binding.NestedLetWithSameName`` () =
Expand All @@ -56,7 +55,7 @@ let private nestedXIsXSource =
[ "let _ ="
" let x = () (*loc-7*)"
" let x ="
" x{caret} (*loc-6*)"
" x{caret}"
" ()" ]

[<Fact>]
Expand Down
Loading
Loading