diff --git a/src/Compiler/Service/FSharpCheckerResults.fs b/src/Compiler/Service/FSharpCheckerResults.fs index 6e9c1ced07..76b8514d8e 100644 --- a/src/Compiler/Service/FSharpCheckerResults.fs +++ b/src/Compiler/Service/FSharpCheckerResults.fs @@ -1631,11 +1631,17 @@ type internal TypeCheckInfo | None -> ValueNone | _ -> ValueNone + let isDiscardIdentifier = + match residueOpt, origLongIdentOpt with + | None, Some [ "_" ] -> true + | _ -> false + match nameResItems with | NameResResult.Cancel(denv, m) -> Some([], denv, m) | NameResResult.Members(FilterRelevantItems getItem exactMatchResidueOpt (items, denv, m)) -> // lookup based on name resolution results successful Some(items |> List.map (CompletionItem (getType ()) ValueNone), denv, m) + | _ when isDiscardIdentifier -> None | _ -> match origLongIdentOpt with | None -> None diff --git a/tests/FSharp.Compiler.Service.Tests/TooltipTests.fs b/tests/FSharp.Compiler.Service.Tests/TooltipTests.fs index 2947e09f56..7695c9f42f 100644 --- a/tests/FSharp.Compiler.Service.Tests/TooltipTests.fs +++ b/tests/FSharp.Compiler.Service.Tests/TooltipTests.fs @@ -399,6 +399,9 @@ let assertNameTagInTooltip expectedTag expectedName (tooltip: ToolTipText) = let desc = tags |> Array.map (fun t -> sprintf "(%A, %s)" t.Tag t.Text) |> String.concat ", " Assert.True(found, sprintf "Expected tag %A with text '%s' in tooltip, but found: %s" expectedTag expectedName desc) +let assertToolTipIsEmpty (ToolTipText(items)) = + Assert.Empty items + let normalize (s: string) = s.Replace("\r\n", "\n").Replace("\n\n", "\n") [] @@ -594,6 +597,24 @@ let y = normaliz{caret}e' 5 |> assertAndGetSingleToolTipText |> Assert.shouldBeEquivalentTo "val normalize': x: int -> int" +[] +let ``Wildcard lambda parameter inside member with underscore instance identifier has no tooltip`` () = + Checker.getTooltip """ +type T () = + member _.M () = + fun _{caret} -> () +""" + |> assertToolTipIsEmpty + +[] +let ``Wildcard let binding inside member with underscore instance identifier has no tooltip`` () = + Checker.getTooltip """ +type T () = + member _.N () = + let _{caret} = () in () +""" + |> assertToolTipIsEmpty + // https://github.com/dotnet/fsharp/issues/13194 [] let ``Sig file XML doc fallback works for member whose name contains a single quote`` () =