Commit Graph

1088 Commits

Author SHA1 Message Date
Richard Feldman
588410395e Monomorphize optional fields 2020-07-18 22:13:09 -04:00
Chad Stearns
cb92b477ea Reverted fancy closure organization in List.append 2020-07-18 21:50:03 -04:00
Chadtech
36a259b56b
Merge branch 'trunk' into list-append 2020-07-18 21:30:51 -04:00
Chad Stearns
5b80bc0ae3 Use correct error messages for unreachable layouts 2020-07-18 21:30:24 -04:00
Chad Stearns
bc1c676be4 Fix english errors in documentation 2020-07-18 21:30:07 -04:00
Chad Stearns
04198c8895 Revert use of closure for if_first_list_is_empty due to memory problem 2020-07-18 21:24:19 -04:00
Chad Stearns
dc6f0daeef Organized list append code into named closures 2020-07-18 21:06:00 -04:00
Chad Stearns
9881c91e1f Pull some shared variables higher up 2020-07-18 17:37:19 -04:00
Richard Feldman
7330e82f75 Constrain optional fields 2020-07-18 14:51:18 -04:00
Chad Stearns
a37f6d670b Re-implement loop on second input list to List.append, except use an offset pointer instead of doing second_index + first_list_len arithemtic, which is more performant 2020-07-18 14:43:06 -04:00
Chad Stearns
74bd85afaa Remove phi1 helper 2020-07-18 14:42:11 -04:00
Richard Feldman
1bdfe578bd Add some solving tests for optional fields 2020-07-18 14:33:25 -04:00
Richard Feldman
98a8bb8115 Fix unifying optional fields 2020-07-18 14:26:38 -04:00
Richard Feldman
eb3ee8ffa3 Fix a parse test 2020-07-18 13:51:04 -04:00
Richard Feldman
a05ebbf36b Solve optional fields 2020-07-18 13:49:06 -04:00
Richard Feldman
8a2d6004ee Constrain uniquness for optional fields 2020-07-18 13:45:12 -04:00
Richard Feldman
1409421de2 Constrain optional record fields 2020-07-18 13:45:12 -04:00
Richard Feldman
8fc9a450b3 Canonicalize optional record fields 2020-07-18 13:12:13 -04:00
Richard Feldman
ae05f0eb0c Unify optional fields 2020-07-18 12:50:47 -04:00
Richard Feldman
8b53ec15fe Change guard to DestructType 2020-07-18 12:42:04 -04:00
Richard Feldman
85f51ef39d Introduce optional record fields 2020-07-18 12:31:17 -04:00
Richard Feldman
ca6881ab3e Change the type of List.mapOrCancel 2020-07-18 11:12:12 -04:00
Richard Feldman
056c3362b5 Update List docs some more 2020-07-18 11:12:12 -04:00
Richard Feldman
e97b019ad2 Add initial List.roc 2020-07-18 11:12:12 -04:00
Richard Feldman
b544218a47 Update some Num docs 2020-07-18 11:12:12 -04:00
Richard Feldman
6ceacba99f Drop obsolete Arr.roc 2020-07-18 11:12:12 -04:00
Richard Feldman
e37d53aff0
Merge branch 'trunk' into usage-analysis-improvements 2020-07-17 20:37:00 -04:00
Richard Feldman
f39b194d45 Update tests for new pattern regions 2020-07-17 19:49:27 -04:00
Richard Feldman
152e06186b Reserved keywords can't be patterns 2020-07-17 19:49:27 -04:00
Richard Feldman
ef010d4dec Fix parsing bug for malformed when-branches 2020-07-17 19:49:27 -04:00
Richard Feldman
6855c85002 Reproduce parsing bug with bad when-branches 2020-07-17 19:33:27 -04:00
Folkert
d27dcceef2 use index-based approach for Apply 2020-07-18 01:23:35 +02:00
Folkert
25329ad672 get rid of Container 2020-07-18 00:57:27 +02:00
Folkert
ce8bcbb5ed introduce Record and Apply Update and Access 2020-07-18 00:52:22 +02:00
Folkert
6e7ec8cd2c fix other test failures 2020-07-18 00:18:55 +02:00
Folkert
706a2f3986 Merge remote-tracking branch 'origin/trunk' into report-record-update 2020-07-17 23:51:37 +02:00
Folkert
0459572940 use different mechanism to special-case builtins in usage analysis
this will be extendible to user-defined functions
2020-07-17 23:50:33 +02:00
Folkert
88ca25e7ee move get_shared function to collections 2020-07-17 23:49:43 +02:00
Richard Feldman
ad3c4207ba Expand on some comments 2020-07-16 21:11:57 -04:00
Richard Feldman
3d9dba251e Fix new Rust 1.45 clippy warning 2020-07-16 19:48:58 -04:00
Richard Feldman
2925706570
Merge branch 'trunk' into fix-quicksort 2020-07-16 19:46:19 -04:00
Richard Feldman
9c6b6f7e25 Silence a few clippy warnings
The map_entry one is important; it seems there's no way to write this
using entry where it's actually correct.
2020-07-16 19:30:30 -04:00
Richard Feldman
153eb4f804 Follow clippy's advice 2020-07-16 19:28:38 -04:00
Richard Feldman
2babe67998 Fix stack overflow in monomorphization 2020-07-16 19:28:25 -04:00
Richard Feldman
fb8ff03670 Clarify a comment 2020-07-15 20:58:50 -04:00
Richard Feldman
fcdb300a03 Improve runtime error message 2020-07-15 20:58:36 -04:00
Richard Feldman
730755a951 Only push pattern_vars when pushing args 2020-07-15 20:58:18 -04:00
Richard Feldman
bd8480284f Report the first runtime error among multiple 2020-07-15 20:57:46 -04:00
Chad Stearns
c9869e67c1 Regress to functional first loop, and no second loop 2020-07-14 22:05:55 -04:00
Chad Stearns
a5462b1043 Second loop in List append (non-functional) 2020-07-14 21:50:35 -04:00
Folkert
331a8ed5eb error message for record update and missing module 2020-07-14 23:37:19 +02:00
Folkert
27317110f2 add comment describing solving process 2020-07-14 23:13:37 +02:00
Richard Feldman
764eda0780 Fix anonymous function specialization 2020-07-12 23:53:58 -04:00
Richard Feldman
2318384740 Revert "Drop unnecessary specialization"
This reverts commit ff7429cab4.
2020-07-12 23:44:05 -04:00
Richard Feldman
c6a0970b73 Defer specialization by one level only 2020-07-12 23:43:55 -04:00
Richard Feldman
ff7429cab4 Drop unnecessary specialization 2020-07-12 23:39:55 -04:00
Richard Feldman
0ab655fda4 Fix another test 2020-07-12 23:02:31 -04:00
Richard Feldman
5e687cc71c Fix a test 2020-07-12 22:58:52 -04:00
Richard Feldman
5f86ac1d10 Never use the specialization queue, for now 2020-07-12 22:53:03 -04:00
Richard Feldman
c2bc98ea4b Only use pending specializations for other modules 2020-07-12 22:53:03 -04:00
Richard Feldman
0b6053e2f6 Reproduce some more type checking bugs 2020-07-12 22:53:03 -04:00
Richard Feldman
5fe30be9f5 s/negate/neg 2020-07-12 22:53:03 -04:00
Richard Feldman
b8a9a3ef42 Account for return types being different in the uniqueness case 2020-07-12 22:53:03 -04:00
Richard Feldman
814ca7c7cc Format some comments 2020-07-12 22:53:03 -04:00
Richard Feldman
a356e8a0f7 Add uniqueness types for List.first 2020-07-12 22:53:03 -04:00
Richard Feldman
e4915985f7 Re-disable first_empty_list 2020-07-12 22:53:03 -04:00
Richard Feldman
71d87e5772 Revert "Add build_trap"
This reverts commit a43903ab1b088ba82f475f12460a05c706a1bf4e.
2020-07-12 22:53:03 -04:00
Richard Feldman
dd1cc5d24e Revert "Try having build_expr return Either"
This reverts commit 2f065f05892fdc188cfdd8f42e878bebe79879cf.
2020-07-12 22:53:03 -04:00
Richard Feldman
70ceaac9ff Try having build_expr return Either 2020-07-12 22:53:03 -04:00
Richard Feldman
7aaf37f4d1 Add build_trap 2020-07-12 22:53:03 -04:00
Richard Feldman
7c0359c6bf Revert "(REVERT THIS!) Temporarily disable some tests"
This reverts commit 0ed1892329.
2020-07-12 22:53:03 -04:00
Chad Stearns
1221ef3c76 Switched order of checking layout and list length for list reverse implementation 2020-07-12 17:11:26 -04:00
Chad Stearns
f807947ce4 Merging in remote, implemented basics of List append in many modules 2020-07-12 14:35:22 -04:00
Folkert
6bc657616d clean up comments 2020-07-12 00:37:05 +02:00
Folkert
362ff74b82 clean up annotation canonicalization 2020-07-12 00:36:11 +02:00
Folkert
d7b2dc7a3b fix test failures caused by def reordering 2020-07-11 02:01:23 +02:00
Folkert
46639c5081 cleanup and comments 2020-07-11 01:51:38 +02:00
Folkert
ba38d4ec14 cleanup 2020-07-10 23:54:00 +02:00
Folkert
d6bdb45c82 Back in working order 2020-07-10 23:54:00 +02:00
Folkert
9aa05fdc4c WIP 2020-07-10 23:54:00 +02:00
Folkert
36ccafd8ab cleanup 2020-07-10 23:54:00 +02:00
Folkert
d61b8c88a1 implement Formattable for Pattern 2020-07-10 23:54:00 +02:00
Folkert
e18d3bbfe4 use Parens type in pattern formatting 2020-07-10 23:54:00 +02:00
Richard Feldman
6046d8ee8e Share more variables between builtins 2020-07-10 23:54:00 +02:00
Richard Feldman
f847693b7f Use debug_assert_eq! more 2020-07-10 23:54:00 +02:00
Folkert de Vries
3a6edd6594
Merge branch 'trunk' into format-annotations 2020-07-09 18:10:20 +02:00
Folkert
1ac1dd1f8f it does help when you add the new file 2020-07-09 18:05:17 +02:00
Folkert
672b67d527 initial version of annotation formatting 2020-07-09 17:41:21 +02:00
Folkert
732496231c expand some comments 2020-07-08 14:30:48 +02:00
Folkert
b7c35665aa report empty non-base-10 integers 2020-07-08 14:18:02 +02:00
Richard Feldman
2ea527a293 Fix missing function in --release builds 2020-07-07 22:55:07 -04:00
Richard Feldman
6eef203e99 Ignore zero-sized fields when unwrapping tag structs 2020-07-07 22:54:58 -04:00
Richard Feldman
ceefdc73b1 clippy stuff 2020-07-07 22:36:27 -04:00
Richard Feldman
4f007dd535 Drop unnecessary .into() 2020-07-07 22:36:24 -04:00
Richard Feldman
0ed1892329 (REVERT THIS!) Temporarily disable some tests
I want to merge this to prevent further merge
conflicts, and these seem fine to debug post-merge.
2020-07-07 22:34:09 -04:00
Richard Feldman
7938a31ce3 Re-add List.reverse (missed in merge) 2020-07-07 22:29:18 -04:00
Richard Feldman
cdce98d14f Unwrap the struct inside a single-tag union 2020-07-07 22:07:34 -04:00
Richard Feldman
2337d6638e Temporarily disable can_inline 2020-07-07 21:11:56 -04:00
Richard Feldman
1cd49689c2 Merge remote-tracking branch 'origin/trunk' into low-level-ops 2020-07-07 21:09:50 -04:00
Richard Feldman
e78064c037
Merge branch 'trunk' into number-error-reporting 2020-07-07 18:48:39 -04:00
Richard Feldman
6e290c4a82
Merge branch 'trunk' into uniqueness-pretty-printing 2020-07-07 18:42:52 -04:00
Folkert de Vries
593fe5ac56
Merge branch 'trunk' into number-error-reporting 2020-07-07 23:16:39 +02:00
Folkert
4aa66b2585 update comment 2020-07-07 22:56:46 +02:00
Folkert
edb79b8fce pretty error messages for floats 2020-07-07 22:53:54 +02:00
Folkert
9d67b11c0d pretty error messages for integers 2020-07-07 22:10:23 +02:00
Folkert
308a24b080 Revert "accept a newline and body when patterns are different"
This reverts commit a0d39ff10f.
2020-07-07 20:17:59 +02:00
Folkert
28ba5e6a99 fix other num functions 2020-07-07 19:02:05 +02:00
Folkert
1af180da48 fix div_f64 2020-07-07 18:54:43 +02:00
Folkert
a7971c738a fix f64_sqrt 2020-07-07 18:52:28 +02:00
Folkert
58dfeba043 accept a newline and body when patterns are different 2020-07-07 17:26:45 +02:00
Folkert
1b4c5cac25 fix failing tests 2020-07-07 17:17:55 +02:00
Richard Feldman
6bde717df8 Add some more i64_abs tests 2020-07-06 22:28:02 -04:00
Richard Feldman
35b653636b Fix Num.abs for ints 2020-07-06 22:27:53 -04:00
Richard Feldman
8d2961c81e Narrow down the problem with f64_sqrt and div_f64 2020-07-06 21:48:39 -04:00
Richard Feldman
9305ecc9bd Specify which test passed or failed 2020-07-06 21:25:54 -04:00
Richard Feldman
b5ad6e17b4 Don't print subs on error
It's way too verbose and unhelpful!
2020-07-06 21:23:59 -04:00
Folkert
ea314be5a2 sort in pretty printing for stable results 2020-07-06 21:46:15 +02:00
Folkert
e595c14fae wip 2020-07-06 20:38:10 +02:00
Richard Feldman
c28dd8fd19 Fix set_unique_int_list test 2020-07-05 22:58:07 -04:00
Richard Feldman
f584f4a226 Temporarily disable a test
It's not urgently important, and this branch needs to get merged!
2020-07-05 22:57:40 -04:00
Richard Feldman
57d84bdcc4 Fix polymorphic identity test 2020-07-05 22:51:46 -04:00
Richard Feldman
092df6ddb2 Account for unwrapped structs in AccessAtIndex 2020-07-05 22:41:07 -04:00
Richard Feldman
853462833c Unwrap around zero-sized record fields in code gen 2020-07-05 22:24:19 -04:00
Richard Feldman
e559deecbf Improve LLVM verification error messages 2020-07-05 22:24:04 -04:00
Richard Feldman
290d68c99e Drop obsolete test_opt
We no longer check for in-place mutations as a transformation on
mono::Expr. Instead, in-place optimizations are done during code gen.
2020-07-05 22:11:32 -04:00
Chad Stearns
09af8a3b8d Add tests to list push to handle cases like we recently solved regarding List.reverse and List.repeat 2020-07-05 15:55:55 -04:00
Chad Stearns
b76033525f Fix memory with with List.repeat creating large lists, and fix problem with List.repeat operating on empty lists with real layout 2020-07-05 15:45:28 -04:00
Folkert
a0d39ff10f accept a newline and body when patterns are different 2020-07-05 18:34:28 +02:00
Richard Feldman
250fcd1fb0 Start at the last element in the list 2020-07-05 09:06:02 -04:00
Richard Feldman
261f252f06 Reproduce List.reverse code gen crash 2020-07-05 08:57:16 -04:00
Richard Feldman
e0a8d12428 Drop unused elem_bytes declaration 2020-07-04 22:56:23 -04:00
Richard Feldman
563436e6be Try using list_len over len 2020-07-04 22:56:23 -04:00
Richard Feldman
4cd9b72859
Merge branch 'trunk' into list-reverse 2020-07-04 22:56:07 -04:00
Richard Feldman
f442cec2da Fix test_load 2020-07-04 22:20:43 -04:00
Richard Feldman
4edd40887a Fix solve_uniq_expr tests 2020-07-04 22:18:35 -04:00
Richard Feldman
73d920e96f Restore uniq::sharing 2020-07-04 22:13:04 -04:00
Chad Stearns
4e7f40ab0f Evaluate if the list to be reversed has a length greater than 0, and match on the layout type EmptyList. We need to do both 2020-07-04 19:45:46 -04:00
Chad Stearns
5fda2de4f2 Merge branch 'trunk' of github.com:rtfeldman/roc into list-reverse 2020-07-04 18:12:06 -04:00
Chad Stearns
78fc5d2fec List append symbol and partial implementation 2020-07-04 18:11:57 -04:00
Folkert
b7d689226c cover all parsed patterns with an error message
but, some invalid patterns are not parsed as expected. See https://github.com/rtfeldman/roc/issues/399
2020-07-04 20:39:49 +02:00
Folkert
0c7a4179aa report malformed int and float patterns 2020-07-04 20:29:37 +02:00
Richard Feldman
06c05e5e9b Try using inlining in test_usage_analysis 2020-07-04 14:26:05 -04:00
Richard Feldman
8665f23a29 Inline LetRec and LetNonRec 2020-07-04 10:57:20 -04:00
Richard Feldman
319da4141e Fix some inlining logic 2020-07-04 10:35:37 -04:00
Richard Feldman
426531cf59 Add a TODO to can_inline 2020-07-04 10:23:14 -04:00
Richard Feldman
1926adb543 Fix inlining and test 2020-07-04 10:23:01 -04:00
Richard Feldman
3e5627689f Add basic inline function and a failing test 2020-07-04 10:22:55 -04:00
Richard Feldman
6a38e8b2de Merge remote-tracking branch 'origin/trunk' into inline-builtins 2020-07-03 23:38:15 -04:00
Richard Feldman
fe63ad394e Add a TODO to can_inline 2020-07-03 23:22:39 -04:00
Richard Feldman
99676b6e57
Merge branch 'trunk' into fix-constrain-todos 2020-07-03 23:18:09 -04:00