From fe5405cb91b8568626576cd3e22acf8059080778 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Mon, 9 Dec 2024 18:30:53 +0100 Subject: [PATCH 1/3] Symbols: try to use ValReprInfoForDisplay in Mfv.CurriedParameterGroups --- src/Compiler/Symbols/Symbols.fs | 2 +- src/Compiler/TypedTree/TypedTreeBasics.fs | 11 +++++------ src/Compiler/TypedTree/TypedTreeBasics.fsi | 2 ++ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Compiler/Symbols/Symbols.fs b/src/Compiler/Symbols/Symbols.fs index 95427b7914f..c2772cf8736 100644 --- a/src/Compiler/Symbols/Symbols.fs +++ b/src/Compiler/Symbols/Symbols.fs @@ -2135,7 +2135,7 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = |> makeReadOnlyCollection | V v -> - match v.ValReprInfo with + match tryGetArityOfValForDisplay v.Deref with | None -> let _, tau = v.GeneralizedType if isFunTy cenv.g tau then diff --git a/src/Compiler/TypedTree/TypedTreeBasics.fs b/src/Compiler/TypedTree/TypedTreeBasics.fs index 0ad62482b6a..582d6767d7e 100644 --- a/src/Compiler/TypedTree/TypedTreeBasics.fs +++ b/src/Compiler/TypedTree/TypedTreeBasics.fs @@ -62,13 +62,12 @@ let arityOfVal (v: Val) = | None -> ValReprInfo.emptyValData | Some info -> info +let tryGetArityOfValForDisplay (v: Val) = + v.ValReprInfoForDisplay + |> Option.orElseWith (fun _ -> v.ValReprInfo) + let arityOfValForDisplay (v: Val) = - match v.ValReprInfoForDisplay with - | Some info -> info - | None -> - match v.ValReprInfo with - | None -> ValReprInfo.emptyValData - | Some info -> info + tryGetArityOfValForDisplay v |> Option.defaultValue ValReprInfo.emptyValData let tupInfoRef = TupInfo.Const false diff --git a/src/Compiler/TypedTree/TypedTreeBasics.fsi b/src/Compiler/TypedTree/TypedTreeBasics.fsi index c064be67c9e..6984d5c64fb 100644 --- a/src/Compiler/TypedTree/TypedTreeBasics.fsi +++ b/src/Compiler/TypedTree/TypedTreeBasics.fsi @@ -45,6 +45,8 @@ val nameOfVal: v: Val -> string val arityOfVal: v: Val -> ValReprInfo +val tryGetArityOfValForDisplay: v: Val -> ValReprInfo option + val arityOfValForDisplay: v: Val -> ValReprInfo val tupInfoRef: TupInfo From ecd42a477c4e519edcfed8ded142b51850ea328a Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Mon, 9 Dec 2024 18:46:56 +0100 Subject: [PATCH 2/3] Add tests --- .../FSharp.Compiler.Service.Tests/Symbols.fs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/FSharp.Compiler.Service.Tests/Symbols.fs b/tests/FSharp.Compiler.Service.Tests/Symbols.fs index eba673f5963..d4de2963316 100644 --- a/tests/FSharp.Compiler.Service.Tests/Symbols.fs +++ b/tests/FSharp.Compiler.Service.Tests/Symbols.fs @@ -787,6 +787,46 @@ type T() = assertRange (9, 19) (9, 20) mProp + + [] + let ``Repr info 01`` () = + let _, checkResults = + getParseAndCheckResults """ +module Module + +let f x = () +""" + let mfv = findSymbolByName "f" checkResults :?> FSharpMemberOrFunctionOrValue + let param = mfv.CurriedParameterGroups[0][0] + param.Name.Value |> shouldEqual "x" + + [] + let ``Repr info 02`` () = + let _, checkResults = + getParseAndCheckResults """ +module Module + +do + let f x = () + () +""" + let mfv = findSymbolByName "f" checkResults :?> FSharpMemberOrFunctionOrValue + let param = mfv.CurriedParameterGroups[0][0] + param.Name.Value |> shouldEqual "x" + + [] + let ``Repr info 03`` () = + let _, checkResults = + getParseAndCheckResults """ +module Module + +type T() = + let f x = () +""" + let mfv = findSymbolByName "f" checkResults :?> FSharpMemberOrFunctionOrValue + let param = mfv.CurriedParameterGroups[0][0] + param.Name.Value |> shouldEqual "x" + module GetValSignatureText = let private assertSignature (expected:string) source (lineNumber, column, line, identifier) = let _, checkResults = getParseAndCheckResults source From edc3e564bf0678eb63e190e9e499553a23ba9989 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Mon, 9 Dec 2024 18:48:16 +0100 Subject: [PATCH 3/3] Release notes --- docs/release-notes/.FSharp.Compiler.Service/9.0.200.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md b/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md index 4c8d5c04829..b53a7167f09 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md +++ b/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md @@ -17,6 +17,7 @@ * Add missing nullable-metadata for C# consumers of records,exceptions and DU subtypes generated from F# code. [PR #18079](https://github.com/dotnet/fsharp/pull/18079) * Fix a race condition in file book keeping in the compiler service ([#18008](https://github.com/dotnet/fsharp/pull/18008)) * Fix trimming '%' characters when lowering interpolated string to a concat call [PR #18123](https://github.com/dotnet/fsharp/pull/18123) +* Symbols: try to use ValReprInfoForDisplay in Mfv.CurriedParameterGroups ([PR #18124](https://github.com/dotnet/fsharp/pull/18124)) ### Added