# stage1: improve message for missing fn return type · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/96e593145dcdb53ca02f2a365abc68415c4302b6)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 96e593145dcdb53ca02f2a365abc68415c4302b6

Requested commit: 96e593145dcdb53ca02f2a365abc68415c4302b6

Commit: 96e593145dcdb53ca02f2a365abc68415c4302b6

Tree: 428bafc94779a7d7ee3f28968ea689c1dbbc6b58

Author: lars

Committer: Isaac Freund

## Message

```
stage1: improve message for missing fn return type

Coming from other languages it might be tempting for programmers to
accidentally leave out the return type instead of returning 'void'.

The error for this used to be

    error: invalid token: '{'
    pub fn main() {
                  ^

which is misleading. The '{' is expected but only after a return type.

The new message is

    error: expected return type (use 'void' to return nothing), found: '{'
    pub fn main() {
                  ^

which not only points out the real error but also hints at a (probably)
very common case where someone coming from e.g. Go is used to not
specifying a return type if a function returns nothing and thus forgets
to put 'void' there.

It might seem overkill to hint at the 'void' option but then the
compiler error messages are our user interface to the programmer. We
can be better than other languages in our error messages and leaving
out the return type seems to be a rather clear indication of the above
mentioned issue. Adding this will help more than distract.

```

## Parents

- [88d40fc005894ef84eb8bf54314da293772c4bba](https://git.cafe/gitcafe/zig/commit/88d40fc005894ef84eb8bf54314da293772c4bba?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/96e593145dcdb53ca02f2a365abc68415c4302b6?format=markdown)
