Commit Graph

1527 Commits

Author SHA1 Message Date
Richard Feldman
5beb65880c Fix List.len 2020-03-14 20:12:27 -04:00
Richard Feldman
36986fd204
Merge branch 'trunk' into mono-if 2020-03-14 15:43:28 -04:00
Chad Stearns
6a0655f96d Merging in remote 2020-03-14 12:35:00 -04:00
Chad Stearns
51ad7ea0f1 unused def report and batch report text 2020-03-14 12:28:36 -04:00
Richard Feldman
e01db9b284 wip empty list 2020-03-13 23:33:32 -04:00
Richard Feldman
e9a0c8b3ef Fix mono for empty list 2020-03-13 22:41:55 -04:00
Richard Feldman
de25dc0484 Re-enable empty list test 2020-03-13 22:41:46 -04:00
Richard Feldman
458b28de17 Drop dbg! statement 2020-03-13 22:41:35 -04:00
Richard Feldman
8d4331f903 Merge remote-tracking branch 'origin/trunk' into array-wrappers 2020-03-13 22:20:35 -04:00
Richard Feldman
4c19dd86ff First pass at some List implementation stuff 2020-03-13 22:15:26 -04:00
Richard Feldman
80722b872a Update List.set to use wrapper 2020-03-13 22:15:02 -04:00
Richard Feldman
6f64bb2f9b Update List.getUnsafe to use wrapper 2020-03-13 22:15:02 -04:00
Folkert
e2a079f0cc empty ext vars in type_to_var 2020-03-14 01:43:14 +01:00
Folkert
b43be95b19 add record_var to Access and Accessor 2020-03-14 01:13:44 +01:00
Folkert
e62ddc9ef5 make record variable names clearer 2020-03-14 01:01:14 +01:00
Folkert
1a8f380033 Merge remote-tracking branch 'origin/trunk' into mono-if 2020-03-14 01:00:25 +01:00
Folkert
1570e9b96e make mono patterns nicer 2020-03-14 00:10:11 +01:00
Folkert
c4c40ec878 fix cond generation
With Enum patterns (u8 in size), the size of the condition and the branches could disagree. (the branches would be i64).
we now cast the branches to the smaller integer type based on the layout
2020-03-14 00:07:32 +01:00
Folkert
38c93c001f constrain whole_var 2020-03-13 23:34:29 +01:00
Folkert
2e697ee8f9 add whole_var to tag union/record
the existing var is for the extension (ext_var). during mono we need the whole type to look up the layout, so store that as well
2020-03-13 23:28:36 +01:00
Folkert
129be86233 clean up when to Cond conversion 2020-03-13 21:24:42 +01:00
Folkert
df54bb5aef fix incorrect signature for isEq in uniq builtins 2020-03-13 20:49:16 +01:00
Folkert
05a3e8c3d8 equality for Byte and Bool 2020-03-13 17:01:18 +01:00
Folkert
f894459159 fix comment 2020-03-13 16:38:33 +01:00
Folkert
242679b841 fix clippy complaints 2020-03-13 16:14:37 +01:00
Folkert
bfde5c596d remove dead code 2020-03-13 15:17:37 +01:00
Folkert
97f1548a24 add tests 2020-03-13 15:16:27 +01:00
Folkert
735358c577 implement isEq for Float/Int 2020-03-13 15:15:10 +01:00
Folkert
6651180283 implement Bool in llvm 2020-03-13 15:13:43 +01:00
Dan Bruder
c16d5cb3f1 struct creation and access in llvm 2020-03-13 10:13:32 -04:00
Folkert
a3b1ec3be0 pull tags/fields from the ext_var during unification 2020-03-13 15:12:32 +01:00
Dan Bruder
eea25429b6 uncomment llvm tests for basic_record 2020-03-13 09:16:04 -04:00
Dan Bruder
099145e4b4 Merge branch 'trunk' into access-record-fields 2020-03-13 09:07:41 -04:00
Folkert
9ef4a6d891 fix bug in uniq isEq type
it always wanted Boolean arguments ...
2020-03-13 13:06:56 +01:00
Folkert
e01a6bab9b improve error reporting by mismatch! macro 2020-03-13 13:06:56 +01:00
Folkert
a7af366c3a new code gen for Cond 2020-03-13 13:06:56 +01:00
Folkert
263e4b4b6c add tests for mono If 2020-03-13 13:06:56 +01:00
Folkert
e3e84ecb0c fix If bug in uniq constraint gen 2020-03-13 13:06:56 +01:00
Folkert
aeeaf99c17 fix bug in constraint gen for If
the condition expression wasn't actually constrained
2020-03-13 13:06:56 +01:00
Folkert
f02193b962 fix new clippy warnings 2020-03-12 22:56:58 +01:00
Folkert
4da01c720e monomorphize the ext_var of records/tag unions 2020-03-12 21:32:58 +01:00
Folkert
f372e4d108 move fresh symbol generation into Env 2020-03-12 16:55:45 +01:00
Dan Bruder
bfd9150af4 access record fields progress 2020-03-12 10:37:07 -04:00
Folkert
de40cf62f3 special-case anonymous functions 2020-03-12 14:03:26 +01:00
Folkert
cfb3952fbf put patterns into PartialProc
So Load(symbol) finds a defined value
2020-03-12 13:20:26 +01:00
Folkert
9761aabe65 add is_empty to Procs 2020-03-12 12:58:03 +01:00
Richard Feldman
f74471012c Improve an error message 2020-03-12 00:53:24 -04:00
Richard Feldman
723ef8e6d0 Add a missing register_debug_idents call 2020-03-12 00:43:04 -04:00
Richard Feldman
494a8574bf Drop obsolete add_closure function 2020-03-12 00:40:07 -04:00
Richard Feldman
9b68fbe3c9 Add PRETTY_PRINT_DEBUG_SYMBOLS 2020-03-12 00:39:53 -04:00
Richard Feldman
173ba925ff Formatting 2020-03-12 00:39:28 -04:00
Richard Feldman
db362f6df0 Reproduce named identity function bug 2020-03-12 00:31:53 -04:00
Richard Feldman
9db7d2229a Remove a .clone() on procs 2020-03-11 22:18:44 -04:00
Folkert
c9644e4ee7 use snapshots to remove clone on Subs 2020-03-12 02:42:30 +01:00
Folkert
3dbaac210a add snapshot functions to Subs 2020-03-12 02:38:38 +01:00
Richard Feldman
cf5e3f92a5 Have mono::Env store &mut Subs 2020-03-11 21:36:27 -04:00
Richard Feldman
2ad70d44a2 Rename Attr module to #Attr, drop #Attr.@Attr 2020-03-11 21:15:30 -04:00
Richard Feldman
df78068e81 Implement int and float subtraction 2020-03-11 21:10:41 -04:00
Richard Feldman
9fcfa90bff Change capitalization 2020-03-11 21:06:08 -04:00
Richard Feldman
762b2c7b10 use IntOrFloat::* 2020-03-11 21:03:58 -04:00
Richard Feldman
a0c4e91792 Rename List.set_in_place to List.#setInPlace 2020-03-11 20:53:39 -04:00
Richard Feldman
21e4eb505a Implement and test Float.#add 2020-03-11 20:53:35 -04:00
Richard Feldman
523282e7bc Implement Int.#add 2020-03-11 20:53:32 -04:00
Richard Feldman
649575fab8 Improve some error messages 2020-03-11 19:48:19 -04:00
Richard Feldman
74b58db477 Use Procs::default() 2020-03-11 19:45:12 -04:00
Folkert
bb9c9d423a make Procs a struct 2020-03-12 00:40:10 +01:00
Folkert
2d0649fa66 attempt fix for gen tests 2020-03-11 23:13:32 +01:00
Folkert
a037173cdb complete the Content hashing 2020-03-11 23:00:44 +01:00
Folkert
f7a2be113e monomorphize closures 2020-03-11 22:03:01 +01:00
Folkert
5c9cf0ef37 add type hash function 2020-03-11 22:01:56 +01:00
Folkert
4c9f2c1b6e monomorphize addition 2020-03-11 15:24:44 +01:00
Folkert
fb8e8570bc Merge remote-tracking branch 'origin/trunk' into num 2020-03-11 14:30:50 +01:00
Folkert
d47d409a92 clean up to_int_or_float
with the changes from the previous commit, this now works as it should
2020-03-11 14:25:16 +01:00
Folkert
17348231fd fix uniqueness Num inference
The variable in Num is the `a` in `Num a`. For Int/Float literals, it's a helper variable to generate better error messages
2020-03-11 14:18:26 +01:00
Folkert
9ba09c7d82 use Reason::NumLiteral in uniqueness inference
we can 'just' do that here because there is a var_store available. That isn't true for normal inference, where we would have to put the variable in during solving
2020-03-11 14:07:49 +01:00
Richard Feldman
55623605f3 clippy mcclip 2020-03-11 00:11:23 -04:00
Richard Feldman
df85c086ab Fix test_uniq_solve 2020-03-11 00:07:19 -04:00
Richard Feldman
c0837eca1c Use constantNum over constantInt in load tests 2020-03-10 23:11:49 -04:00
Richard Feldman
a033f325f4 Support integer (Num *) patterns in jump tables 2020-03-10 23:08:26 -04:00
Richard Feldman
a0d762d1e5 Fix more mono::expr (Num *) cases 2020-03-10 23:06:11 -04:00
Richard Feldman
0bac39f9f1 Fix from_can for (Num *) 2020-03-10 22:59:30 -04:00
Richard Feldman
d4dc0eb683 Implement uniqueness for (Num *) 2020-03-10 22:53:53 -04:00
Richard Feldman
3ecbe0325c Plain number literals (e.g. 5) are now Num * 2020-03-10 22:27:13 -04:00
Folkert
fd1c29fb35 convert Tag to mono 2020-03-10 20:54:33 +01:00
Folkert
62f34c41cc hardcode Bool alias
previously it would use the tag union, which would result in slightly worse error messages down the line
2020-03-10 15:21:39 +01:00
Folkert
657901d760 bubble up pointer_size 2020-03-10 15:16:44 +01:00
Folkert
7fea957979 hardcode Bool 2020-03-10 14:50:35 +01:00
Folkert
fef590b9f7 remove unneeded variable check in reporting 2020-03-10 13:44:54 +01:00
Folkert
246199ec3e fixes after review 2020-03-10 12:01:13 +01:00
Richard Feldman
8da2bebcde Remove some dbg! statements 2020-03-10 02:56:56 -04:00
Richard Feldman
28b50c00c0 Clean up some comments 2020-03-10 02:56:56 -04:00
Richard Feldman
21d6d1cbd9 Disable empty_list_len for now 2020-03-10 02:56:56 -04:00
Richard Feldman
913f18226b Got LLVM structs working 2020-03-10 02:56:56 -04:00
Richard Feldman
8da7f26237 Try a different Struct approach 2020-03-10 02:56:56 -04:00
Richard Feldman
8450597a07 Try an alloca approach for structs 2020-03-10 02:56:55 -04:00
Richard Feldman
3789402a32 Rename List.length to List.len 2020-03-10 02:56:55 -04:00
Richard Feldman
f556f195d3 Handle more mono::Expr cases 2020-03-10 02:25:40 -04:00
Richard Feldman
c7daad8404 Restore home's ident_ids after creating Expr 2020-03-09 23:02:36 -04:00
Richard Feldman
0a8e360e19 Get bool_literal compiling 2020-03-09 23:02:36 -04:00
Folkert
5237408b15 do what clippy wants 2020-03-09 23:51:48 +01:00
Folkert
2bad39e8b9 convert enum tag unions to mono 2020-03-09 23:40:18 +01:00
Richard Feldman
6ae1ee373e Use a tag on rtfeldman/inkwell 2020-03-08 17:51:13 -04:00
Richard Feldman
e06d68f2a1
Merge branch 'trunk' into opt 2020-03-08 17:23:02 -04:00
Chad Stearns
b4e028a39c Upgrade to correct bumpalo version in reporting Cargo 2020-03-08 17:05:06 -04:00
Chad Stearns
2eb729937e Merge branch 'restore-reporting-tests' of github.com:rtfeldman/roc into restore-reporting-tests 2020-03-08 16:49:52 -04:00
Chad Stearns
a9cf87e67e Satisfy clippy 2020-03-08 16:48:08 -04:00
Chadtech
0a053cfac4
Merge branch 'trunk' into restore-reporting-tests 2020-03-08 16:28:08 -04:00
Chad Stearns
3fc19e90e4 Precedence conflict tests 2020-03-08 16:26:17 -04:00
Richard Feldman
d878ef86aa Add List.set_in_place test to test_opt 2020-03-08 15:18:39 -04:00
Richard Feldman
99359221ab Add List.set test to test_mono 2020-03-08 15:09:01 -04:00
Richard Feldman
dcfa117227 Basic test_mono and test_opt 2020-03-08 14:45:27 -04:00
Mario Rogic
a5c2844f54 Float.div implemented, Int.div WIP-ish 2020-03-08 18:32:48 +00:00
Richard Feldman
17e9f0b8c3 Error early on a type mismatch in test_gen 2020-03-08 12:13:59 -04:00
Mario Rogic
c502aee10e Add test for potential multiplication and division order of ops ambiguity 2020-03-08 13:58:18 +00:00
Richard Feldman
be4abcf173 Fix List.set tests 2020-03-08 01:20:43 -05:00
Chadtech
35a3d736a0
Merge branch 'trunk' into restore-reporting-tests 2020-03-08 00:42:49 -05:00
Chad Stearns
704b81d67c Restore report tests and also add more basic tests 2020-03-08 00:39:28 -05:00
Richard Feldman
74e92f35f1 Disable List.set tests for now 2020-03-08 00:33:13 -05:00
Richard Feldman
72ecb231f1 clip clop clip clop clippy 2020-03-07 23:11:42 -05:00
Richard Feldman
abe9b8efaa Use Layout over Variable for both build modules 2020-03-07 23:04:28 -05:00
Richard Feldman
d589f6b2df Fix infer_expr_help in test_reporting 2020-03-07 15:54:46 -05:00
Chad Stearns
a165248a17 Cargo fmt 2020-03-07 14:46:08 -05:00
Chad Stearns
922e5d5af3 Bringing in reporting test files 2020-03-07 14:44:11 -05:00
Chad Stearns
25513d7eda Restoring report test file 2020-03-07 14:43:47 -05:00
Richard Feldman
db4ef45708 Upgrade to List.set_in_place when appropriate 2020-03-07 12:43:24 -05:00
Folkert
bca43a2564 improve is_unique 2020-03-07 12:43:24 -05:00
Richard Feldman
a092f59b0f First pass at is_unique 2020-03-07 12:43:24 -05:00
Richard Feldman
365c65a7d9 Fix lifetime problem with arena 2020-03-07 11:20:39 -05:00
Richard Feldman
0f79a3311d Upgrade bumpalo to 3.2 2020-03-07 11:20:35 -05:00
Folkert
63c5af2882 make builtin applies importable 2020-03-07 01:21:45 +01:00
Folkert
9c5df1d5a5 fix uniqueness tests 2020-03-07 01:03:18 +01:00
Folkert
12e3bae371 fix up code gen 2020-03-07 01:03:03 +01:00
Folkert
21bbfd3c94 Merge remote-tracking branch 'origin/trunk' into use-fewer-variables 2020-03-07 00:53:13 +01:00
Folkert
94f2b6b6f6 switch back to Apply where possible 2020-03-07 00:50:38 +01:00
Richard Feldman
60adf36db2 Fix some tests 2020-03-06 18:28:13 -05:00
Richard Feldman
bf994c38f5 Clean up some trailing spaces in AStar.roc 2020-03-06 18:25:36 -05:00
Folkert
eb7d9d98e6 hardcode variables for empty records and tag unions 2020-03-07 00:25:16 +01:00
Richard Feldman
df4533296b fix some tests 2020-03-06 18:24:37 -05:00
Richard Feldman
363a7a0abd Mov gen to its own crate 2020-03-06 18:24:37 -05:00
Richard Feldman
a18e023326 Move load to its own crate 2020-03-06 18:24:37 -05:00
Richard Feldman
31e300021c Move fmt to separate crate 2020-03-06 18:24:37 -05:00
Richard Feldman
33d849100b Drop obsolete string.rs 2020-03-06 18:24:37 -05:00
Richard Feldman
5a129a506a Move fmt 2020-03-06 18:24:37 -05:00
Richard Feldman
762ae80ec4 Move solve and uniq tests into other crates 2020-03-06 18:24:37 -05:00
Richard Feldman
8fc75f2b2e fix some tests 2020-03-06 18:24:37 -05:00
Richard Feldman
a2f5f6f9fb Move solve and uniq tests into other crates 2020-03-06 18:24:37 -05:00
Folkert
37fc820e59 add tests 2020-03-06 23:56:17 +01:00
Folkert
4848eb5901 refactor introduced variables
This has lead to so many problems, so I made a special-purpose type for it
2020-03-06 23:55:31 +01:00
Folkert
c6121e3805 add unique builtins for AStar 2020-03-06 23:54:13 +01:00
Folkert
d34c96ec96 AStar with uniqueness inference 2020-03-06 23:52:32 +01:00
Folkert
455ab1da16 re-add larger stack size helper
it's needed for uniqueness inference of AStar. We should really optimize variable usage though...
2020-03-06 23:51:14 +01:00
Folkert
edcda78e9d remove dbg! 2020-03-06 15:26:55 +01:00
Folkert
9d18924d1f add AStar.roc again 2020-03-06 14:07:38 +01:00
Folkert
639a56b59c fix ordering issue in canonicalize test 2020-03-06 14:07:24 +01:00
Folkert
7b1ae75860 fix issues after merge 2020-03-06 13:59:46 +01:00
Folkert
c760180195 add tests 2020-03-06 13:49:04 +01:00
Folkert
fefac9580e expose rigids introduced by builtins
they aren't used yet, because their names can 'leak'. Not sure what the best way forward is here
2020-03-06 13:48:52 +01:00
Folkert
b9b2f70673 add AStar test 2020-03-06 13:46:58 +01:00
Folkert
4d061bd932 add builtins required for AStar 2020-03-06 13:46:58 +01:00
Folkert
de8d1f81d1 fix typo in Tag unification 2020-03-06 13:46:58 +01:00
Folkert
12a819e762 extract tags from the ext variable
turns out this is always needed. I also removed the explicit check for an empty tag union: there could still be tags in the ext even if the union itself seems empty.
seems weird to optimize for the empty case because it'll be very rare in practice
2020-03-06 13:45:59 +01:00
Richard Feldman
c3fcfd65cb Move reporting into its own crate 2020-03-06 02:06:18 -05:00
Richard Feldman
3b26a982f0 Move pretty_print_types into types crate 2020-03-06 02:01:05 -05:00
Richard Feldman
45bda2e0c7 Move unique_builtins into builtins crate 2020-03-06 01:47:04 -05:00
Richard Feldman
cc92ca7e7c Move solve and unify into their own crates 2020-03-06 01:43:50 -05:00
Richard Feldman
908e485fca Move constrain and its deps into their own crates 2020-03-06 01:43:39 -05:00
Richard Feldman
5b5f800c70 cargo fmt 2020-03-05 23:03:49 -05:00
Richard Feldman
8ef2ae3de7 clippy clip clip 2020-03-05 23:03:29 -05:00
Richard Feldman
3b6ed43126 Extract can/ into its own crate, plus its deps 2020-03-05 23:01:32 -05:00
Richard Feldman
6ac60fa5cb Update reporting to use new crate structure. 2020-03-05 20:52:00 -05:00
Richard Feldman
a1b8c97039 Added can_problem and Docs 2020-03-05 20:48:13 -05:00
Richard Feldman
d5163fa4d4 Add src/reporting.rs 2020-03-05 20:48:13 -05:00
Richard Feldman
5615a26569 Drop obsolete comment 2020-03-05 20:48:13 -05:00
Folkert
0f8373d39f register rigids correctly 2020-03-06 00:33:37 +01:00
Folkert
9818b1a2da fix typo in unify
Caused incorrect unification of records in some circumstances
2020-03-06 00:33:24 +01:00
Folkert
429ba6ed06 make call_successors safe
For recursive functions, it could enter an infinite recursion.
2020-03-06 00:33:08 +01:00
Richard Feldman
313b7a79e8 Use workspaces and move everything into compiler/ 2020-03-05 17:45:52 -05:00