Commit graph

5882 commits

Author SHA1 Message Date
ayazhafiz
fe99d20be5 Apply review suggestions 2021-11-18 21:49:37 -05:00
ayazhafiz
5bfc52cd3b Remove Sugar enum and inline single variant into CalledVia 2021-11-18 21:23:41 -05:00
ayazhafiz
8b7217847d Rename additional stale roc_module::operator refs and format 2021-11-18 20:20:33 -05:00
ayazhafiz
8a60162a1e Rename roc_module::operator -> roc_module::called_via
A bit of a nit, but this file is now more general than just keeping
track of operator methods.
2021-11-18 20:20:33 -05:00
ayazhafiz
30955a1eb8 Take syntactic sugar into account when reporting errors
Previously, a program like

```roc
word = "word"

if True then 1 else "\(word) is a word"
```

would report an error like

```
── TYPE MISMATCH ───────────────────────────────────────────────────────────────

This `if` has an `else` branch with a different type from its `then` branch:

3│  if True then 1 else "\(word) is a word"
                        ^^^^^^^^^^^^^^^^^^

This concat all produces:

    Str

but the `then` branch has the type:

    Num a

I need all branches in an `if` to have the same type!
```

but this is a little bit confusing, since the user shouldn't have to
know (or care) that string interpolations are equivalent to
concatenations under the current implementation.

Indeed we should make this fully transparent. We now word the error
message by taking into account the way calls are made. To support the
case shown above, we introduce the `CalledVia::Sugar` variant to
represent the fact that some calls may be the result of desugaring the
surface syntax.

This commit also demonstrates the usage of `CalledVia` to produce better
error messages where we use binary comparison operators like `<`. There
are more improvements we can make here for all `CalledVia` variants, but
this is a good starting point to demonstrate the usage of the new
procedure.

Closes #1714
2021-11-18 20:20:33 -05:00
rvcas
8544782173 feat: trying some things out 2021-11-18 18:52:55 -05:00
Folkert
9126169fcb StorageSubs 2021-11-18 23:02:47 +01:00
Michael Downey
d11bb93539
Merge branch 'trunk' into add_list_all 2021-11-18 16:09:24 -05:00
Michael Downey
12f7d4b458 fixing format 2021-11-18 16:04:38 -05:00
Folkert de Vries
a4fc813ca3
Merge pull request #2002 from rtfeldman/builtins-list-intersperse
Add builtin `List.intersperse`
2021-11-18 22:00:10 +01:00
Richard Feldman
4f7935a4da
Merge pull request #2003 from rtfeldman/deep-copy-var-to
Store pending or external specializations in Subs instead of SolvedType
2021-11-18 09:10:21 -05:00
Folkert
947051749d fix typo 2021-11-18 13:17:29 +01:00
Folkert
9aca302c39 Merge remote-tracking branch 'origin/trunk' into deep-copy-var-to 2021-11-18 13:16:24 +01:00
Folkert
f99542f066 add special symbol for removed specializations 2021-11-18 13:15:00 +01:00
Michael Downey
9d587d37b4
Merge branch 'trunk' into add_list_all 2021-11-18 06:41:08 -05:00
satotake
2eae1a857b Fix comment wording 2021-11-18 11:20:37 +00:00
satotake
9aabd08953 fmt 2021-11-18 11:17:05 +00:00
satotake
ce8a88416d Merge branch 'trunk' into builtins-list-intersperse 2021-11-18 11:16:27 +00:00
satotake
7ce9f1b3bd refactor after review 2021-11-18 10:15:38 +00:00
Brian Carroll
be55582290 Enable some more gen_wasm string builtins 2021-11-18 09:59:52 +00:00
Brian Carroll
9b2f01042e Enable all Str.concat tests 2021-11-18 09:04:52 +00:00
Michael Downey
c5484a9ad3 fixing List.all on empty list to be true 2021-11-17 22:47:49 -05:00
ayazhafiz
214b8a30a9 Suggest typo fixes for non-existing module values 2021-11-17 22:40:51 -05:00
ayazhafiz
c156f61b0f Suggest tags of primitive types when an ident is misspelled
With this change, mispellings of things like `true` and `false` will
include a hint to the user that they may want to use `True` and `False`,
respectively, instead.

There are a few ways to implement this, but exposing these common tags
(which compose builtin type aliases) seems the easiest, least expensive,
and doesn't break anything for now.
2021-11-17 22:40:51 -05:00
Joshua Warner
7f5b873357 Parse _ in type annotations as an 'Inferred' type 2021-11-17 17:59:40 -08:00
Richard Feldman
91c97dbba4
Merge pull request #2006 from rtfeldman/fix-macos-builds-1968
Fix compiler builds on macOS
2021-11-17 20:17:11 -05:00
ayazhafiz
c17b9ffaa3 Fix compiler builds on macOS
`cargo build` is currently failing on trunk. #1986 added an extra
parameter to the definition of `build_zig_host_native` active for
non-macOS targets, but did not reflect that parameter in the
macOS-specific definition.

I don't think there is a good way to test against these kinds of things
without a dedicated macOS machine on the CI runner (`cargo check
--target x86_64-apple-darwin` won't work since some dependencies need
arch-specific things to be present during build time). Any suggestions
are appreciated!
2021-11-17 17:45:02 -05:00
Richard Feldman
6adbfbd245
Merge pull request #1998 from rtfeldman/roc-reporting-separate-module
Move reporting module into root.
2021-11-17 17:41:15 -05:00
Richard Feldman
380f8bceec
Merge pull request #1990 from rtfeldman/fix-dev-backend-readme-link
Fix link in gen_dev README.md
2021-11-17 17:29:19 -05:00
Brendan Hansknecht
09f030621c
Merge pull request #1992 from rtfeldman/dev-backend-num-int-negate
add x86_64 Int Num.neg support for gen_dev
2021-11-17 14:16:36 -08:00
Folkert
f9c81bffe0 make external specializations more efficient
- create fewer Subs values
- don't merge Subs if not needed
2021-11-17 23:09:20 +01:00
Folkert
0199c00936 Merge remote-tracking branch 'origin/trunk' into deep-copy-var-to 2021-11-17 22:34:46 +01:00
Folkert
75126b09fd refactor procs.specialized 2021-11-17 22:33:24 +01:00
Richard Feldman
1d330d9147
Merge pull request #1982 from rtfeldman/joshuawarner32/parser-snapshot-testing
Convert most test_parser tests to "snapshot" tests
2021-11-17 16:01:43 -05:00
Richard Feldman
2bb007e08b
Merge pull request #1987 from rtfeldman/builtins-list-split
Add builtin `List.split`
2021-11-17 13:41:58 -05:00
Brian Carroll
3d124b4122 Fix builtin calls for primitives 2021-11-17 16:51:42 +00:00
Brian Carroll
b5b90fb2b7 Delete unused file 2021-11-17 16:45:52 +00:00
Brian Carroll
1134b6f45c Fix test_wrapper linking bug 2021-11-17 16:45:38 +00:00
Folkert
e6c561de7a Merge remote-tracking branch 'origin/trunk' into deep-copy-var-to 2021-11-17 16:34:01 +01:00
Folkert
e030cd3da5 optimize restore 2021-11-17 16:33:32 +01:00
Folkert
65e0866d0a add assert; a returned copy must always be in the target subs 2021-11-17 16:32:20 +01:00
Folkert
3b1e0eeb24 store a subs instead of a solved type in external specializations 2021-11-17 16:31:13 +01:00
Folkert
237d8d1c0b fix the Default instance for subs
we later rely on some variables always existing (numbers, empty record, empty tag union)
but the default instance did not insert those
2021-11-17 16:29:16 +01:00
satotake
16fb04b4fa Add builtin List.intersperse 2021-11-17 15:18:45 +00:00
Brian Carroll
751bfd842c Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-str-builtins 2021-11-17 14:36:52 +00:00
Brian Carroll
e75a9ec281 Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-str-builtins 2021-11-17 13:51:11 +00:00
Brian Carroll
a3bfee5cd8 Leave other string builtins for later 2021-11-17 13:48:29 +00:00
Brian Carroll
03c19b727a String concatenation working in gen_wasm! 2021-11-17 13:38:50 +00:00
Brian Carroll
a8f402d155
Merge branch 'trunk' into wasm-long-string-literal 2021-11-17 13:34:27 +00:00
Brian Carroll
9de989c0d5 Link wasm test binaries with libc.a 2021-11-17 12:54:39 +00:00