From 97a89098fafac7def93fe6d2544b380c493126ec Mon Sep 17 00:00:00 2001 From: Ondrej Sebek Date: Mon, 16 May 2022 20:20:34 +0200 Subject: [PATCH 1/2] Test multiline eval results - add test for multiline show instance See #2907 --- plugins/hls-eval-plugin/test/Main.hs | 1 + .../test/testdata/TMultiResult.expected.hs | 13 +++++++++++++ .../hls-eval-plugin/test/testdata/TMultiResult.hs | 9 +++++++++ 3 files changed, 23 insertions(+) create mode 100644 plugins/hls-eval-plugin/test/testdata/TMultiResult.expected.hs create mode 100644 plugins/hls-eval-plugin/test/testdata/TMultiResult.hs diff --git a/plugins/hls-eval-plugin/test/Main.hs b/plugins/hls-eval-plugin/test/Main.hs index cd334c2693..a505a2486d 100644 --- a/plugins/hls-eval-plugin/test/Main.hs +++ b/plugins/hls-eval-plugin/test/Main.hs @@ -68,6 +68,7 @@ tests = , goldenWithEval "Refresh an evaluation" "T5" "hs" , goldenWithEval "Refresh an evaluation w/ lets" "T6" "hs" , goldenWithEval "Refresh a multiline evaluation" "T7" "hs" + , goldenWithEval "Evaluate a multi-line show result" "TMultiResult" "hs" -- Do not escape from comments! , testCase "Semantic and Lexical errors are reported" $ do evalInFile "T8.hs" "-- >>> noFunctionWithThisName" "-- Variable not in scope: noFunctionWithThisName" evalInFile "T8.hs" "-- >>> res = \"a\" + \"bc\"" $ diff --git a/plugins/hls-eval-plugin/test/testdata/TMultiResult.expected.hs b/plugins/hls-eval-plugin/test/testdata/TMultiResult.expected.hs new file mode 100644 index 0000000000..a8ed57a2ce --- /dev/null +++ b/plugins/hls-eval-plugin/test/testdata/TMultiResult.expected.hs @@ -0,0 +1,13 @@ +module TMultiResult where +-- test multiline show instance (see #2907) + +data Multiline = M {l1 :: String, l2 :: String} deriving Read + +instance Show Multiline where + show m = "M {\n l1=" <> show (l1 m) <> ",\n l2=" <> show (l2 m) <> "\n}" + +-- >>> M "first line" "second line" +-- M { +-- l1="first line", +-- l2="second line" +-- } diff --git a/plugins/hls-eval-plugin/test/testdata/TMultiResult.hs b/plugins/hls-eval-plugin/test/testdata/TMultiResult.hs new file mode 100644 index 0000000000..11037e516f --- /dev/null +++ b/plugins/hls-eval-plugin/test/testdata/TMultiResult.hs @@ -0,0 +1,9 @@ +module TMultiResult where +-- test multiline show instance (see #2907) + +data Multiline = M {l1 :: String, l2 :: String} deriving Read + +instance Show Multiline where + show m = "M {\n l1=" <> show (l1 m) <> ",\n l2=" <> show (l2 m) <> "\n}" + +-- >>> M "first line" "second line" From 2a4b9d9cf41d3b023cc8dde11d08550ffb57d1de Mon Sep 17 00:00:00 2001 From: Ondrej Sebek Date: Mon, 16 May 2022 20:36:46 +0200 Subject: [PATCH 2/2] Fix multiline eval padding See haskell#2907 --- plugins/hls-eval-plugin/src/Ide/Plugin/Eval/CodeLens.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/CodeLens.hs b/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/CodeLens.hs index 70d7c7d130..32419d6cad 100644 --- a/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/CodeLens.hs +++ b/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/CodeLens.hs @@ -358,8 +358,9 @@ runTests EvalConfig{..} e@(_st, _) tests = do dbg "TEST RESULTS" rs let checkedResult = testCheck eval_cfg_diff (section, test) rs + let resultLines = concatMap T.lines checkedResult - let edit = asEdit (sectionFormat section) test (map pad checkedResult) + let edit = asEdit (sectionFormat section) test (map pad resultLines) dbg "TEST EDIT" edit return edit