Skip to content
Draft
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
6 changes: 6 additions & 0 deletions src/Compiler/Checking/NicePrint.fs
Original file line number Diff line number Diff line change
Expand Up @@ -978,6 +978,12 @@ module PrintTypes =
let prefix = usePrefix denv tc
layoutTypeAppWithInfoAndPrec denv env (layoutTyconRefImpl false denv tc None) prec prefix args
| TType_app (tc, args, nullness) ->
let tc =
if tyconRefEq denv.g tc denv.g.tcref_System_Collections_Generic_IEnumerable then
denv.g.seq_tcr
else
tc

let prefix = usePrefix denv tc
let demangledCompilationPathOpt, args =
if not denv.includeStaticParametersInTypeNames then
Expand Down
6 changes: 3 additions & 3 deletions tests/FSharp.Compiler.Service.Tests/EditorTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -130,15 +130,15 @@ let ``GetMethodsAsSymbols should return all overloads of a method as FSharpSymbo
yield ms.Symbol.DisplayName, extractCurriedParams ms ]
|> List.sortBy (fun (_name, parameters) -> parameters.Length, (parameters |> List.map snd ))
let expected =
[("Concat", [("values", "Collections.Generic.IEnumerable<'T>")]);
("Concat", [("values", "Collections.Generic.IEnumerable<string>")]);
[("Concat", [("values", "'T seq")]);
#if NETCOREAPP
("Concat", [("args", "ReadOnlySpan<obj>")]);
("Concat", [("values", "ReadOnlySpan<string>")]);
#endif
("Concat", [("arg0", "obj")]);
("Concat", [("args", "obj array")]);
("Concat", [("values", "string array")]);
("Concat", [("values", "string array")])
("Concat", [("values", "string seq")])
#if NETCOREAPP
("Concat", [("str0", "ReadOnlySpan<char>");("str1", "ReadOnlySpan<char>")]);
#endif
Expand Down
12 changes: 12 additions & 0 deletions tests/FSharp.Compiler.Service.Tests/Symbols.fs
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,18 @@ let f2 b1 b2 b3 b4 b5 =
let ``Nullable types`` declaredType formattedType =
let _, checkResults = getParseAndCheckResults $"""
let f (x: {declaredType}) = ()
"""
let symbolUse = findSymbolUseByName "x" checkResults
let symbol = symbolUse.Symbol :?> FSharpMemberOrFunctionOrValue
let typeArg = symbol.FullType
typeArg.Format(symbolUse.DisplayContext) |> shouldEqual formattedType

[<Theory>]
[<InlineData("IEnumerable<int>", "int seq")>]
let ``Format IEnumerable as seq`` declaredType formattedType =
let _, checkResults = getParseAndCheckResults $"""
open System.Collections.Generic
let f (x: {declaredType}) = ()
"""
let symbolUse = findSymbolUseByName "x" checkResults
let symbol = symbolUse.Symbol :?> FSharpMemberOrFunctionOrValue
Expand Down
Loading