Commit graph

206 commits

Author SHA1 Message Date
Chad Stearns
ed17d59743 cargo fmt 2020-01-19 21:53:15 -05:00
Chad Stearns
f7d6230c3e Comply with clippy and use struct instead of tuple 2020-01-19 21:47:02 -05:00
Chad Stearns
89964f9e66 Resolving conflicts with trunk 2020-01-19 16:37:58 -05:00
Chad Stearns
146583e7c6 When branches have a guard 2020-01-19 14:17:14 -05:00
Richard Feldman
99188cfa36 Reproduce tag in annotation parsing bug 2020-01-18 18:45:05 -05:00
Richard Feldman
a4e238b09c Merge remote-tracking branch 'origin/trunk' into case-multi-patterns 2020-01-11 13:10:09 -05:00
Folkert
dd240cf53a typecheck tags with arguments
also fixes an issue where private tags in patterns would not have the @ symbol in their name
2020-01-09 13:20:21 +01:00
Richard Feldman
865fd41cdd Fix comment 2020-01-08 22:15:36 -05:00
Stoeffel
150b75721c allow alternatives on all branches. 2020-01-08 12:58:40 +01:00
Stoeffel
a98113c88d don't use a tuple to ensure non-emptiness 2020-01-08 11:05:53 +01:00
Stoeffel
4fce01b57a separate test for alternatives in branch 2020-01-08 09:34:27 +01:00
Stoeffel
505effd1d9 basic parsing of alternative cases in when .. in 2020-01-08 08:53:48 +01:00
Stoeffel
3a1d905b66 one or more patterns in branches
Modify ast to allow mutliple pattern per branch in when.

  when animal is
    Dog x | Fox x => "bark"
    Cat x => "miau"
2020-01-08 06:39:25 +01:00
Richard Feldman
3509390761 Test open tag union annotations 2020-01-06 21:36:38 -05:00
Richard Feldman
cdf98c21e9 Add tests for parsing tag annotations 2020-01-06 21:36:38 -05:00
Richard Feldman
2071595287 Un-qualify TypeAnnotation in tests 2020-01-06 21:36:38 -05:00
Richard Feldman
ca302cf17c Format out some newlines 2020-01-06 21:36:38 -05:00
Richard Feldman
2eb7108faa Reproduce private tag parsing bug 2020-01-06 21:36:38 -05:00
Richard Feldman
df4e1c250e Reproduce failing tag pattern 2020-01-05 14:20:48 -05:00
Richard Feldman
7fa77e1060 Test parsing record updates 2020-01-05 00:36:49 -05:00
Richard Feldman
748d57f523 Parse record updates 2020-01-05 00:36:49 -05:00
Richard Feldman
56df170be6 Reproduce parsing failure on [ ] 2019-12-31 20:20:58 -05:00
Chad Stearns
844ca0a50e Changed instances of 'Case' in the code to 'When' 2019-12-23 17:41:19 -05:00
Chad Stearns
62a004c103 Case is to when is 2019-12-23 17:17:04 -05:00
Chad Stearns
9a5b6a03b4 case when to case is 2019-12-23 17:08:53 -05:00
Richard Feldman
d0fa8bf857 Use commas between function arguments 2019-12-18 21:50:45 -05:00
Richard Feldman
d73b8ca1fc Remove UnqualifiedIdent 2019-12-16 21:29:03 -05:00
Folkert
35c8b9b5c9 Parse function type signatures 2019-12-13 22:52:49 +01:00
Folkert
502021d955 Always parse type signatures in let blocks.
Formerly, this would not parse

    foo : Int
    foo = 4

While this would

    bar = 3
    foo : Int
    foo = 4

Now, the first def can also be a type annotation.

This change performs some code duplication. This can probably be
abstracted/unified, but I'm not sure how to do that in a clean way.
2019-12-13 19:53:46 +01:00
Richard Feldman
37422c6a76 Add failing tests for hex/octal/binary 2019-12-07 02:26:08 -05:00
Richard Feldman
ba92480d97 Reorganize can/ module 2019-12-05 19:51:56 -05:00
Richard Feldman
b3bdbd9d98 Reproduce subtraction parsing bug 2019-12-05 19:31:10 -05:00
Richard Feldman
59dc729209 Fix unicode parsing bug. 2019-12-04 21:29:50 -05:00
Richard Feldman
1d18f4cc85 Use private/global tags and Access over Field 2019-12-02 18:36:59 -05:00
Richard Feldman
be1e83dd6d Use crate:: prefix a bunch. 2019-11-27 22:11:40 -05:00
Richard Feldman
b2e19ffe72 Reproduce failing module_defs parse 2019-11-27 21:14:22 -05:00
Richard Feldman
145d985c2d Add failing test for nested module parsing 2019-11-27 17:21:08 -05:00
Richard Feldman
4926bfbc3a Reorganize fmt and module 2019-11-25 20:42:44 -05:00
Richard Feldman
8e0fb89f66 Introduce Expr::ParensAround 2019-11-22 00:21:32 -05:00
Folkert
848b067556 allow pattern matching on records
there are a couple of cases here that are interesting:

- assigned fields, like `{ x: y }` should never occur as a pattern.
- what whitespace can occur now that block comments are removed? In elm, record patters have to be on a single line. For instance this gives a parse error:

```elm
type alias Model =
    { count : Int, value : Int }

x model =
    case model of
        { count
          -- bar
        , value
        }
        ->
            2
```

but its equivalent in Roc with the current parser accepts both newlines and
line comments in record patterns, so this is accepted:

```
x model =
    case model with
        { count
          # bar
        , value
        }
        ->
            2
```

That seems fine, but just want to
check that is desired.
2019-11-20 14:51:06 +01:00
Richard Feldman
60ee53080a Reproduce malformed argument bug 2019-11-16 22:39:25 -05:00
Richard Feldman
3a4bc0b311 Test unary ops with parens 2019-11-08 00:09:38 -05:00
Richard Feldman
97d424f99b Unary ops and case canonicalization compile! 2019-11-08 00:07:32 -05:00
Richard Feldman
7ab7fdb88c Add unary operators 2019-11-04 21:25:55 -05:00
Richard Feldman
7e910532c5 Fix parsing for case-expresison number literals 2019-10-30 20:00:35 +01:00
Richard Feldman
61e4ae83d9 Restore two_branch_case test 2019-10-30 19:58:21 +01:00
Richard Feldman
39f4057dfa Fix column number in some parsing tests 2019-10-30 02:36:35 -04:00
Richard Feldman
abdc19cf8e Fix some test compilation errors 2019-10-29 18:26:18 -04:00
Richard Feldman
f738d9db80 Revise Def structure 2019-10-26 15:31:39 -04:00
Richard Feldman
eeb2bb376c Code gen ints and floats 2019-10-21 20:12:37 -04:00