From ea2f44351e29032c74f9c0326269ac3257987d07 Mon Sep 17 00:00:00 2001 From: En3Tho <37334640+En3Tho@users.noreply.github.com> Date: Fri, 6 Nov 2020 11:54:32 +0300 Subject: [PATCH 1/2] Improved nice print to give literal values --- src/fsharp/NicePrint.fs | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index cdfbf1ee89a..f6eed72ada1 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -1301,6 +1301,29 @@ module private PrintTastMemberOrVals = let prettyLayoutOfMemberNoInstShort denv v = prettyLayoutOfMemberShortOption denv emptyTyparInst v true |> snd + let prettyLayoutOfLiteralValue literalValue = + let literalValue = + match literalValue with + | Const.Bool value -> if value then WordL.keywordTrue else WordL.keywordFalse + | Const.SByte _ + | Const.Byte _ + | Const.Int16 _ + | Const.UInt16 _ + | Const.Int32 _ + | Const.UInt32 _ + | Const.Int64 _ + | Const.UInt64 _ + | Const.IntPtr _ + | Const.UIntPtr _ + | Const.Single _ + | Const.Double _ + | Const.Decimal _ -> literalValue.ToString() |> tagNumericLiteral |> wordL + | Const.Char _ + | Const.String _ -> literalValue.ToString() |> tagStringLiteral |> wordL + | Const.Unit -> literalValue.ToString() |> tagText |> wordL + | Const.Zero -> literalValue.ToString() |> tagText |> wordL + LeftL.leftParen ++ literalValue ++ RightL.rightParen + let private layoutNonMemberVal denv (tps, v: Val, tau, cxs) = let env = SimplifyTypes.CollectInfo true [tau] cxs let cxs = env.postfixConstraints @@ -1328,9 +1351,13 @@ module private PrintTastMemberOrVals = layoutTyparDecls denv nameL true tps else nameL let valAndTypeL = (WordL.keywordVal ^^ typarBindingsL --- wordL (tagPunctuation ":")) --- layoutTopType denv env argInfos rty cxs - match denv.generatedValueLayout v with - | None -> valAndTypeL - | Some rhsL -> (valAndTypeL ++ wordL (tagPunctuation"=")) --- rhsL + let valAndTypeL = + match denv.generatedValueLayout v with + | None -> valAndTypeL + | Some rhsL -> (valAndTypeL ++ wordL (tagPunctuation"=")) --- rhsL + match v.LiteralValue with + | Some literalValue -> valAndTypeL ++ prettyLayoutOfLiteralValue literalValue + | None -> valAndTypeL let prettyLayoutOfValOrMember denv typarInst (v: Val) = let prettyTyparInst, vL = From f8bc146509f66d399c2c7be677368b91a33f8885 Mon Sep 17 00:00:00 2001 From: En3Tho <37334640+En3Tho@users.noreply.github.com> Date: Fri, 6 Nov 2020 22:18:49 +0300 Subject: [PATCH 2/2] Addressed CR --- src/fsharp/NicePrint.fs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index f6eed72ada1..6d07c712693 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -1301,7 +1301,7 @@ module private PrintTastMemberOrVals = let prettyLayoutOfMemberNoInstShort denv v = prettyLayoutOfMemberShortOption denv emptyTyparInst v true |> snd - let prettyLayoutOfLiteralValue literalValue = + let layoutOfLiteralValue literalValue = let literalValue = match literalValue with | Const.Bool value -> if value then WordL.keywordTrue else WordL.keywordFalse @@ -1320,9 +1320,9 @@ module private PrintTastMemberOrVals = | Const.Decimal _ -> literalValue.ToString() |> tagNumericLiteral |> wordL | Const.Char _ | Const.String _ -> literalValue.ToString() |> tagStringLiteral |> wordL - | Const.Unit -> literalValue.ToString() |> tagText |> wordL + | Const.Unit | Const.Zero -> literalValue.ToString() |> tagText |> wordL - LeftL.leftParen ++ literalValue ++ RightL.rightParen + WordL.equals ++ literalValue let private layoutNonMemberVal denv (tps, v: Val, tau, cxs) = let env = SimplifyTypes.CollectInfo true [tau] cxs @@ -1356,7 +1356,7 @@ module private PrintTastMemberOrVals = | None -> valAndTypeL | Some rhsL -> (valAndTypeL ++ wordL (tagPunctuation"=")) --- rhsL match v.LiteralValue with - | Some literalValue -> valAndTypeL ++ prettyLayoutOfLiteralValue literalValue + | Some literalValue -> valAndTypeL ++ layoutOfLiteralValue literalValue | None -> valAndTypeL let prettyLayoutOfValOrMember denv typarInst (v: Val) =