haskell / haskell/error-messages

Bare top-level expressions

Open
#35 4 comments 0 reactions 0 assignees View on GitHub
status:Composing error message tool:GHC type:error-message
Dominant language
No language data
Stars
76
Forks
19
PR merge metrics
No merged PRs in 30d

Description

Given this module:
```hs
sum [1,2,3,4]
```

We get this error when loading it into GHCi:

```
Main.hs:1:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
1 | sum [1,2,3,4]
| ^^^^^^^^^^^^^
Failed, no modules loaded.
```

Perhaps we can:

1. Recognize that this is a bare top-level expression.
2. Reflect that in the error message.
3. Suggest that the user might want to bind this bare expression to a name.

Suggested error message:

```
Main.hs:1:1: error:
Parse error: module header, import declaration
or top-level declaration expected, but encountered
a bare expression instead.
Perhaps you meant to bind this expression to a name?
|
1 | sum [1,2,3,4]
| ^^^^^^^^^^^^^
Failed, no modules loaded.
```

Ideally, it would also be nice if the error message didn't mention module headers or import declarations in places where it doesn't apply, such as in this example:

```hs
import Data.List
xs = [3,5,1,2]
sort xs
```
```
Main.hs:3:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
3 | sort xs
| ^^^^^
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.