Commit graph

179 commits

Author SHA1 Message Date
Folkert
14ad793bd7 hook up TypeError 2020-04-01 16:28:10 +02:00
Folkert
db3ffc6dab make runtime errors for invalid patterns 2020-03-31 01:47:14 +02:00
Folkert
c202cf3e6b don't generate Store with no stores 2020-03-26 15:11:40 +01:00
Folkert
fc905b505c codegen for letrec 2020-03-26 14:53:38 +01:00
Folkert
39fb78b2d5 remove Jump/Label from mono::Expr 2020-03-24 00:11:02 +01:00
Folkert
958f3f9ad4 change pattern destructuring stores
they are now tracked in the Cond/Switch variants, rather than merged into the branch constructors. Required for 'beans'
2020-03-23 23:35:45 +01:00
Folkert
2bb69f333f always Cond on a symbol
this will make 'beans' easier
2020-03-23 20:00:15 +01:00
Folkert
3dbdb64a93 fix merge conflict 2020-03-23 17:56:38 +01:00
Folkert
baeb8ad96a test unit type patterns 2020-03-23 17:55:02 +01:00
Folkert
b9613fcdc5 clean up tag pattern match conversion 2020-03-23 17:55:02 +01:00
Folkert
a7b5768c47 use a custom type to store Union variants 2020-03-23 17:55:02 +01:00
Folkert
46062439b5 remove label from Struct layout 2020-03-23 17:55:02 +01:00
Folkert
e2a7c970bc refactor Access into AccessAtIndex 2020-03-23 17:55:02 +01:00
Richard Feldman
db502fe2e7 Revise some tests 2020-03-21 22:51:11 -04:00
Richard Feldman
ef38095003 Fix optimization test
The reason this was failing was that `x` was getting
dropped by dead code elimination, and therefore wasn't
considered a reason to share any values it used.
2020-03-21 21:19:18 -04:00
Richard Feldman
cc8683d241 Fix use of GEP (was using byte offset, not index) 2020-03-21 21:19:18 -04:00
Richard Feldman
3a6018d223 Reproduce List.set uniqueness bug 2020-03-21 21:19:18 -04:00
Folkert
9a0234e5dd make bound variables available in guards 2020-03-22 01:11:19 +01:00
Folkert
1f3b8f7d68 guard exhaustiveness 2020-03-21 23:33:37 +01:00
Folkert
a16d48a6a9 code gen for simple guards
Guards cannot use variables bound in the pattern yet
2020-03-21 22:27:36 +01:00
Folkert
97acf1363d cleanup after review 2020-03-21 12:52:10 +01:00
Folkert
c57b5c8bc3 make old tests pass again 2020-03-21 01:02:02 +01:00
Folkert
920928399a type inference for pattern guards 2020-03-21 00:39:52 +01:00
Folkert
0f22cbbf7d fix incorrect layout for Switch 2020-03-20 19:56:50 +01:00
Folkert
d0da300042 fix equality/hash issue
lead to tests not being merged/shared
2020-03-20 16:23:56 +01:00
Folkert
e062404a63 support more complex nested patterns 2020-03-20 14:27:07 +01:00
Folkert
fbadd9d620 add pointer Layout 2020-03-20 11:53:21 +01:00
Folkert
f44fea42bb Boolean and/or in cranelift 2020-03-20 00:59:26 +01:00
Folkert
82655556ab exhaustiveness for record guards 2020-03-19 22:34:08 +01:00
Folkert
0985037754 expand record pattern matches to bind all unused fields with underscore
this will simplify exhaustiveness checking, because a record is not like a one-tag union
2020-03-19 20:42:58 +01:00
Folkert
5fc96c09ee Add record patterns 2020-03-19 17:08:29 +01:00
Folkert
9745d86efb add tests 2020-03-19 14:59:05 +01:00
Folkert
c31116af87 preparation for recursive tag unions 2020-03-19 12:20:12 +01:00
Folkert
9d1e2a0ef1 support zero-sized values (empty record, unit type)
They now use no stack space
2020-03-19 11:31:06 +01:00
Folkert
b93fe4e341 make arbitrary AccessAtIndex work
it now uses that actual layout, not a hardcoded one
2020-03-19 00:25:16 +01:00
Folkert
f3f135eca5 make Layout Hash 2020-03-18 23:26:17 +01:00
Folkert
b28a6ffa33 optimize tag union layout calculation 2020-03-18 22:42:10 +01:00
Folkert
0996f264e7 simplify Byte layout 2020-03-18 22:22:32 +01:00
Folkert
c11f374eb0 simplify Bool layout 2020-03-18 22:15:03 +01:00
Folkert
99db336033 Working pattern match on Result Int Int 2020-03-18 21:35:10 +01:00
Folkert
53bd47221c WIP things seem to work in theory 2020-03-18 16:44:53 +01:00
Folkert
845e30658e WIP 2020-03-18 02:20:21 +01:00
Folkert
6253d2d1af pattern match on single-tag tag unions
in LLVM and crane
2020-03-17 19:44:59 +01:00
Folkert
b5abed5f54 variables in pattern matches on single tags 2020-03-17 16:27:09 +01:00
Folkert
9d756a3b2c generate unpacked tags in Crane 2020-03-17 15:26:21 +01:00
Folkert
c3d550116b make patterns store their bound variables 2020-03-17 14:04:26 +01:00
Folkert
6310341b7e Merge remote-tracking branch 'origin/trunk' into pattern-compilation 2020-03-17 12:49:30 +01:00
Richard Feldman
77bf2547ac Add sfe_to_memcpy 2020-03-16 21:55:24 -04:00
Richard Feldman
f9e013793c Drop unused mono::Expr::Pointer 2020-03-16 21:47:08 -04:00
Richard Feldman
bfe7c1b330 Update a comment 2020-03-16 21:27:49 -04:00