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 |
|
Folkert
|
c20f777dba
|
comment tests that fail for llvm
|
2020-03-17 00:36:58 +01:00 |
|
Folkert
|
ab332a37c3
|
take the maximum of all tags when calculating layout
|
2020-03-17 00:36:58 +01:00 |
|
Folkert
|
72ca6d675c
|
further tag support in Cranelift
|
2020-03-17 00:36:58 +01:00 |
|
Folkert
|
c9a90c32e3
|
prepare for Tag code gen
|
2020-03-17 00:36:58 +01:00 |
|
Folkert
|
e742b77e0b
|
parity with old implementation
|
2020-03-17 00:36:58 +01:00 |
|
Folkert
|
d875f8bfce
|
implement layout for Tag
|
2020-03-17 00:36:58 +01:00 |
|
Folkert
|
8c7124aba6
|
first pass
|
2020-03-17 00:36:58 +01:00 |
|
Richard Feldman
|
455fabbe88
|
c to the l to the i p p y
|
2020-03-15 15:21:33 -04:00 |
|
Richard Feldman
|
6cd8afd5d6
|
Fix using structs with records
|
2020-03-15 15:13:52 -04:00 |
|
Richard Feldman
|
010e390fd6
|
Make using records in defs work
|
2020-03-15 14:31:01 -04:00 |
|
Folkert
|
6e97734211
|
ensure Bit/Enum patterns are considered exhaustive
|
2020-03-15 14:42:57 +01:00 |
|
Folkert
|
8a46765fee
|
add debug assert for possible invariant
|
2020-03-15 14:42:57 +01:00 |
|
Folkert
|
3ea748e532
|
remove extra check
|
2020-03-15 14:42:57 +01:00 |
|
Folkert
|
9207145792
|
remove unneeded error vec
|
2020-03-15 14:42:57 +01:00 |
|
Folkert
|
58fd1d64ff
|
do exhaustiveness on mono patterns
|
2020-03-15 14:42:57 +01:00 |
|
Folkert
|
2e3f21b1ce
|
add commented test
|
2020-03-15 14:42:57 +01:00 |
|
Folkert
|
58c09aeaba
|
First pass at pattern exhaustivess checking
|
2020-03-15 14:42:57 +01:00 |
|
Folkert
|
5926ac2f01
|
stub out Tag layout
|
2020-03-15 14:42:57 +01:00 |
|