diff --git a/src/Compiler/Checking/NicePrint.fs b/src/Compiler/Checking/NicePrint.fs index 00b6f4c0b5..c1080e17d1 100644 --- a/src/Compiler/Checking/NicePrint.fs +++ b/src/Compiler/Checking/NicePrint.fs @@ -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 diff --git a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs index 6ac0789cd9..6df9a1dc4a 100644 --- a/tests/FSharp.Compiler.Service.Tests/EditorTests.fs +++ b/tests/FSharp.Compiler.Service.Tests/EditorTests.fs @@ -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")]); + [("Concat", [("values", "'T seq")]); #if NETCOREAPP ("Concat", [("args", "ReadOnlySpan")]); ("Concat", [("values", "ReadOnlySpan")]); #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");("str1", "ReadOnlySpan")]); #endif diff --git a/tests/FSharp.Compiler.Service.Tests/Symbols.fs b/tests/FSharp.Compiler.Service.Tests/Symbols.fs index b5126bf1ca..cc83a98cb1 100644 --- a/tests/FSharp.Compiler.Service.Tests/Symbols.fs +++ b/tests/FSharp.Compiler.Service.Tests/Symbols.fs @@ -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 + + [] + [", "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