@@ -30,6 +30,27 @@ module InlineParameterNameHints =
3030 let private doesFieldNameExist ( field : FSharpField ) =
3131 not field.IsNameGenerated
3232
33+ let private getTupleRanges
34+ ( symbolUse : FSharpSymbolUse )
35+ ( parseResults : FSharpParseFileResults ) =
36+
37+ let position = Position.mkPos
38+ ( symbolUse.Range.End.Line)
39+ ( symbolUse.Range.End.Column + 1 )
40+
41+ parseResults.FindParameterLocations position
42+ |> Option.map ( fun locations -> locations.ArgumentLocations)
43+ |> Option.map ( Seq.map ( fun location -> location.ArgumentRange))
44+ |> Option.defaultValue []
45+ |> Seq.toList
46+
47+ let private getCurryRanges
48+ ( symbolUse : FSharpSymbolUse )
49+ ( parseResults : FSharpParseFileResults ) =
50+
51+ parseResults.GetAllArgumentsForFunctionApplicationAtPosition symbolUse.Range.Start
52+ |> Option.defaultValue []
53+
3354 let isMemberOrFunctionOrValueValidForHint ( symbol : FSharpMemberOrFunctionOrValue ) ( symbolUse : FSharpSymbolUse ) =
3455 if symbolUse.IsFromUse then
3556 let isNotBuiltInOperator =
@@ -52,18 +73,16 @@ module InlineParameterNameHints =
5273 ( symbolUse : FSharpSymbolUse ) =
5374
5475 let parameters = symbol.CurriedParameterGroups |> Seq.concat
55- let ranges = parseResults.GetAllArgumentsForFunctionApplicationAtPosition symbolUse.Range.Start
56-
57- match ranges with
58- | Some ranges ->
59- parameters
60- |> Seq.zip ranges
61- |> Seq.where ( snd >> doesParameterNameExist)
62- |> Seq.map getParameterHint
63- |> Seq.toList
64-
65- // this is the case at least for custom operators
66- | None -> []
76+
77+ let tupleRanges = parseResults |> getTupleRanges symbolUse
78+ let curryRanges = parseResults |> getCurryRanges symbolUse
79+ let ranges = if tupleRanges |> ( not << Seq.isEmpty) then tupleRanges else curryRanges
80+
81+ parameters
82+ |> Seq.zip ranges // Seq.zip is important as List.zip requires equal lengths
83+ |> Seq.where ( snd >> doesParameterNameExist)
84+ |> Seq.map getParameterHint
85+ |> Seq.toList
6786
6887 let getHintsForUnionCase
6988 ( parseResults : FSharpParseFileResults )
0 commit comments