Commit graph

980 commits

Author SHA1 Message Date
Folkert de Vries
fc369ddebb windows create dylibs for gen tests 2022-08-02 15:38:05 +02:00
Folkert de Vries
f601a56d52 Revert "be explicit about the target"
This reverts commit 882ac1ea48.
2022-08-02 15:37:38 +02:00
Folkert de Vries
882ac1ea48 be explicit about the target
on windows, the file extentions are not enough to derive the target
2022-08-02 14:55:38 +02:00
Folkert de Vries
19159d170a Merge remote-tracking branch 'origin/trunk' into windows-linking 2022-08-02 14:11:02 +02:00
Folkert de Vries
d62691406f enable compiler rt 2022-08-02 14:09:53 +02:00
Folkert de Vries
1366be4a50 formatting 2022-08-02 00:10:26 +02:00
Folkert de Vries
6342729850 emit_bin is already in the string 2022-08-02 00:02:36 +02:00
Folkert de Vries
5061a67534
Merge pull request #3642 from rtfeldman/can-abilities6
Syntactic abilities: Part 6 - eager lambda set specialization, and fix ability let-generalization
2022-08-01 23:57:56 +02:00
Folkert de Vries
7df31619dd add the concept of an OS to target info 2022-08-01 23:53:17 +02:00
Folkert de Vries
6f3c8477e6 link_windows
just uses zig
2022-08-01 23:21:51 +02:00
Folkert de Vries
06e5fe8cba pick right host object name 2022-08-01 23:20:46 +02:00
Folkert de Vries
51fdd43838 explicitly indicate the output file 2022-08-01 23:12:53 +02:00
Folkert de Vries
23411ea147 add the Windows64 target 2022-08-01 23:10:31 +02:00
Richard Feldman
c098190341
Merge pull request #3662 from rtfeldman/call-opaques-by-what-they-are
Report opaques as opaques, not aliases
2022-08-01 15:15:08 -04:00
Folkert de Vries
784d855cd9 windows line feed in when parsing 2022-08-01 19:24:02 +02:00
Anton-4
d6b62add36
fixed BUILTINS_HOST_OBJ_PATH not found 2022-08-01 18:54:16 +02:00
Anton-4
0b5b3a8652
Merge branch 'trunk' of github.com:rtfeldman/roc into build-nix 2022-08-01 16:51:07 +02:00
Anton-4
43f9e2a7c3
fixes to make default.nix work 2022-08-01 16:50:38 +02:00
Ayaz Hafiz
b87f09115c
Report opaques as opaques, not aliases
Closes #3313
Closes #3654
2022-08-01 08:02:56 -05:00
Richard Feldman
fffbbd08b0
Merge pull request #3656 from rtfeldman/expect-struct
Expect struct/box/non-recursive tag
2022-08-01 08:51:19 -04:00
Ayaz Hafiz
9421336384
Fix runtime error 2022-07-31 19:45:47 -05:00
Ayaz Hafiz
985c43b15b
Don't panic when weird things get into a record
Closes #3648
2022-07-31 19:43:18 -05:00
Brendan Hansknecht
fa31e836f7
Merge pull request #3665 from rtfeldman/fix-cp-error
Don't copy `zig-cache` in `build.rs`
2022-07-30 20:07:44 +00:00
Ayaz
f72d29d6c5
Merge pull request #3660 from rtfeldman/i3653
Unify material recursion variables behind aliases and opaques
2022-07-29 18:35:44 -05:00
Ayaz
ad63acdc48
Merge pull request #3663 from rtfeldman/type-var-name-hints
Allow naming type variables with a basis hint
2022-07-29 18:35:29 -05:00
Richard Feldman
a05a482ff9
Drop unused fs-extra dependency 2022-07-29 17:16:51 -04:00
Richard Feldman
1071aa8eac
Don't copy zig-cache when building builtins 2022-07-29 17:16:51 -04:00
Ayaz
fffe9ca8ee
Merge pull request #3659 from rtfeldman/when-on-128bit-numbers
when on 128-bit numbers
2022-07-29 14:54:16 -05:00
Ayaz
ff0edc72c3
Merge pull request #3657 from rtfeldman/when-on-strings
implement when on multiple string patterns
2022-07-29 14:53:35 -05:00
Ayaz Hafiz
02d5d0ec92
Allow naming type variables with a basis hint
I think this makes it easier to read type variables when they come from
flex/rigid vars with pre-existing names, just give them a number suffix
to differentiate them.
2022-07-29 15:32:44 -04:00
Anton-4
668fa3ef49
Merge pull request #3645 from rtfeldman/use-bitwise-or-instead-of-addition
Replace addition with bitwise or
2022-07-29 19:52:55 +02:00
Ayaz Hafiz
c397f7a0d9
Turn off failing test for now 2022-07-29 11:09:10 -04:00
Ayaz Hafiz
1460f60ab1
Unify material recursion variables behind aliases and opaques
Even if there are no changes to alias arguments, and no new variables were
introduced, we may still need to unify the "actual types" of the alias or opaque!

The unification is not necessary from a types perspective (and in fact, we may want
to disable it for `roc check` later on), but it is necessary for the monomorphizer,
which expects identical types to be reflected in the same variable.

As a concrete example, consider the unification of two opaques

  P := [Zero, Succ P]

  (@P (Succ n)) ~ (@P (Succ o))

`P` has no arguments, and unification of the surface of `P` introduces nothing new.
But if we do not unify the types of `n` and `o`, which are recursion variables, they
will remain disjoint! Currently, the implication of this is that they will be seen
to have separate recursive memory layouts in the monomorphizer - which is no good
for our compilation model.

Closes #3653
2022-07-29 11:03:47 -04:00
Brian Carroll
94ccfc30a3
Merge pull request #3658 from rtfeldman/wasm-fix-shiftRightBy
wasm: Fix shiftRightBy for U8 and U16
2022-07-29 15:22:15 +02:00
Ayaz Hafiz
1976e435a0
Turn a couple more solve tests back on 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
41eb3ad9a4
Separate ability members and their specializations in reference checking 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
7a4c57d3dc
Clippy 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
4049eb6780
Remove unused OpportunisticResolve field 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
31220d5598
Fix spelling 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
f145f29b1b
Make sure records don't de-generalize function types, fixing ability let-generalization
Closes #3641
2022-07-29 08:43:19 -04:00
Ayaz Hafiz
ce8c8f7264
Update solve test
Use named recursive calls for now in ability members
2022-07-29 08:43:18 -04:00
Ayaz Hafiz
f2d4bf20ba
Collect awaited lambda set specializations to be solved when a specialization is known
Despite our best efforts, sometimes we still can't specialize lambda
sets on the fly, if a specialization lambda set's specialization type
isn't yet well-known! This commit adds an `AwaitingSpecializations`
data structure to keep track of the lambda sets blocked for
specialization behind a specialization's full resolution in the module.
After the specialization is resolved, its blocked lambda sets can be
eagerly compacted.
2022-07-29 08:43:18 -04:00
Ayaz Hafiz
350d9cd59b
Simplify opportunistic resolution
We don't need to unify the type state anymore because resolved able
variables are determined only by one type variable.
2022-07-29 08:43:18 -04:00
Ayaz Hafiz
403b2b14b7
Add remove_dependent_unspecialized_lambda_sets to UlsOfVar 2022-07-29 08:43:18 -04:00
Ayaz Hafiz
5a42acc11c
Debug specialization keys 2022-07-29 08:43:18 -04:00
Ayaz Hafiz
240a48bc1c
De-duplicate unspecialized lambda sets by root var 2022-07-29 08:43:17 -04:00
Ayaz Hafiz
76fe397aa1
Consolidate exposed types and derived module in a derived environment 2022-07-29 08:43:17 -04:00
Ayaz Hafiz
0ec92c12f7
Move lambda set specialization to its own module in solve 2022-07-29 08:43:16 -04:00
Folkert
d90fbbb032
remove duplicate test 2022-07-29 14:42:26 +02:00
Christoph Rüßler
ee4c62473e
Replace addition with bitwise or 2022-07-29 14:26:29 +02:00