Skip to content

Commit

Permalink
Document GHC-08838
Browse files Browse the repository at this point in the history
  • Loading branch information
StillerHarpo committed Oct 13, 2024
1 parent eaae755 commit 52dc88a
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module WrongDoBind where

doubleReturn :: forall m. Monad m => m Int
doubleReturn = return 10
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module WrongDoBind where

doubleReturn :: forall m. Monad m => m Int
doubleReturn = do
return (return 10 :: m Int)
return 10
16 changes: 16 additions & 0 deletions message-index/messages/GHC-08838/WrongDoBind/index.md
Original file line number Diff line number Diff line change
@@ -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)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
9 changes: 9 additions & 0 deletions message-index/messages/GHC-08838/index.md
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit 52dc88a

Please sign in to comment.