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 00000000..b6d93bbf --- /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 00000000..1b76679c --- /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 00000000..234ed618 --- /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 00000000..1aaa4576 --- /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.