From 52dc88aa51ad690b8fa9c28c3737563f4acc01f3 Mon Sep 17 00:00:00 2001 From: Florian Engel Date: Sun, 13 Oct 2024 10:00:08 +0200 Subject: [PATCH] Document GHC-08838 --- .../GHC-08838/WrongDoBind/after/WrongDoBind.hs | 4 ++++ .../GHC-08838/WrongDoBind/before/WrongDoBind.hs | 6 ++++++ .../messages/GHC-08838/WrongDoBind/index.md | 16 ++++++++++++++++ message-index/messages/GHC-08838/index.md | 9 +++++++++ 4 files changed, 35 insertions(+) create mode 100644 message-index/messages/GHC-08838/WrongDoBind/after/WrongDoBind.hs create mode 100644 message-index/messages/GHC-08838/WrongDoBind/before/WrongDoBind.hs create mode 100644 message-index/messages/GHC-08838/WrongDoBind/index.md create mode 100644 message-index/messages/GHC-08838/index.md diff --git a/message-index/messages/GHC-08838/WrongDoBind/after/WrongDoBind.hs b/message-index/messages/GHC-08838/WrongDoBind/after/WrongDoBind.hs new file mode 100644 index 0000000..b6d93bb --- /dev/null +++ b/message-index/messages/GHC-08838/WrongDoBind/after/WrongDoBind.hs @@ -0,0 +1,4 @@ +module WrongDoBind where + +doubleReturn :: forall m. Monad m => m Int +doubleReturn = return 10 diff --git a/message-index/messages/GHC-08838/WrongDoBind/before/WrongDoBind.hs b/message-index/messages/GHC-08838/WrongDoBind/before/WrongDoBind.hs new file mode 100644 index 0000000..1b76679 --- /dev/null +++ b/message-index/messages/GHC-08838/WrongDoBind/before/WrongDoBind.hs @@ -0,0 +1,6 @@ +module WrongDoBind where + +doubleReturn :: forall m. Monad m => m Int +doubleReturn = do + return (return 10 :: m Int) + return 10 diff --git a/message-index/messages/GHC-08838/WrongDoBind/index.md b/message-index/messages/GHC-08838/WrongDoBind/index.md new file mode 100644 index 0000000..234ed61 --- /dev/null +++ b/message-index/messages/GHC-08838/WrongDoBind/index.md @@ -0,0 +1,16 @@ + +--- +title: Double return +--- + +In this example, there is a nested return whose result is not bound to a variable. Therefore the computation `return 10` is not used and can be removed. + +``` +messages/GHC-08838/WrongDoBind/before/WrongDoBind.hs:5:4: warning: [GHC-08838] [-Wwrong-do-bind] + A do-notation statement discarded a result of type ‘m Int’ + Suggested fix: + Suppress this warning by saying ‘_ <- return (return 10 :: m Int)’ + | +5 | return (return 10 :: m Int) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +``` diff --git a/message-index/messages/GHC-08838/index.md b/message-index/messages/GHC-08838/index.md new file mode 100644 index 0000000..1aaa457 --- /dev/null +++ b/message-index/messages/GHC-08838/index.md @@ -0,0 +1,9 @@ +--- +title: Wrong do bind +summary: Returning a monadic computation in a do block and not binding it will not run it +severity: warning +introduced: 9.4.1 +--- +When using a monadic computation in a do block one should either run it +directly or bind the result of the computation to a variable. If neither +is done the monadic computation is never run and can be removed.