unison/unison-src/transcripts/error-messages.md

126 lines
1.8 KiB
Markdown

```ucm:hide
scratch/main> builtins.merge
```
This file contains programs with parse errors and type errors, for visual inspection of error message quality and to check for regressions or changes to error reporting.
## Parse errors
Some basic errors of literals.
### Floating point literals
```unison:error
x = 1. -- missing some digits after the decimal
```
```unison:error
x = 1e -- missing an exponent
```
```unison:error
x = 1e- -- missing an exponent
```
```unison:error
x = 1E+ -- missing an exponent
```
### Hex, octal, binary, and bytes literals
```unison:error
x = 0xoogabooga -- invalid hex chars
```
```unison:error
x = 0o987654321 -- 9 and 8 are not valid octal char
```
```unison:error
x = 0b3201 -- 3 and 2 are not valid binary chars
```
```unison:error
x = 0xsf -- odd number of hex chars in a bytes literal
```
```unison:error
x = 0xsnotvalidhexchars -- invalid hex chars in a bytes literal
```
### Layout errors
```unison:error
foo = else -- not matching if
```
```unison:error
foo = then -- unclosed
```
```unison:error
foo = with -- unclosed
```
### Matching
```unison:error
-- No cases
foo = match 1 with
```
```unison:error
foo = match 1 with
2 -- no right-hand-side
```
```unison:error
-- Mismatched arities
foo = cases
1, 2 -> ()
3 -> ()
```
```unison:error
-- Missing a '->'
x = match Some a with
None ->
1
Some _
2
```
```unison:error
-- Missing patterns
x = match Some a with
None -> 1
-> 2
-> 3
```
```unison:error
-- Guards following an unguarded case
x = match Some a with
None -> 1
| true -> 2
```
### Watches
```unison:error
-- Empty watch
>
```
### Keywords
```unison:error
use.keyword.in.namespace = 1
```
```unison:error
-- reserved operator
a ! b = 1
```