Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@

---
Comment on lines +1 to +2
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
---
---

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.6.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.