KtorZ
5c59b816ea
Add parser for 'Pair' pattern
...
And a few more tests along the way for others. Note that it is important here that we try to parse for a 'Pair' BEFORE we try to parse for a constructor pattern. Because the latter would swallow any Pair pattern.
2024-05-04 14:04:12 -04:00
KtorZ
91a7e77ab4
Add 'Pair' pattern and rework internals to use it.
...
Currently, pattern-matching on 'Pair' is handled by treating Pair as a
record, which comes as slightly odd given that it isn't actually a
record and isn't user-defined. Thus now, every use of a record must
distinguish between Pairs and other kind of records -- which screams
for another variant constructor instead.
We cannot use `Tuple` either for this, because then we have no ways to
tell 2-tuples apart from pairs, which is the whole point here. So the
most sensical thing to do is to define a new pattern `Pair` which is
akin to tuples, but simpler since we know the number of elements and
it's always 2.
2024-05-04 14:04:12 -04:00
KtorZ
897b5d1d7e
Ensure type-aliases pretty-printing also work with Pair.
2024-05-04 14:04:12 -04:00
KtorZ
3020af7cd7
Revert 'unify' implementation back to its more elegant form
...
And add support for Pair.
2024-05-04 14:04:12 -04:00
KtorZ
cbf3ef2854
Add new Prelude alias: 'Map'
2024-05-04 14:04:12 -04:00
microproofs
7b5ad961e2
fix: found issue with record access on Pairs
2024-05-04 14:04:12 -04:00
microproofs
30dd1f60e7
small simplification
2024-05-04 14:04:12 -04:00
microproofs
75b076552c
feat: Do a major overhaul on how we check types to allow for match patterns instead of if statements
...
Also fix one more test
2024-05-04 14:04:12 -04:00
microproofs
3c332ca42a
Few more places in codegen where we need to be able to deal with Pair records
2024-05-04 14:04:12 -04:00
microproofs
26f68c2fb4
fix: found various unify and type issues while running tests
2024-05-04 14:04:12 -04:00
microproofs
fd226be51f
add Pair type to prelude
2024-05-04 14:04:12 -04:00
microproofs
a8c8cf41cf
Finishing up codegen changes for pair
2024-05-04 14:04:12 -04:00
microproofs
963d275bb8
continue progress on pair adding
2024-05-04 14:04:12 -04:00
microproofs
21b60896f0
remove wild card match from tree functions
...
Start working on supporting Pair clauses
2024-05-04 14:04:12 -04:00
microproofs
f950ae7d3d
WIP: add new opcodes to Air and AirTree and update parts of codegen to handle the new pair type
2024-05-04 14:04:12 -04:00
microproofs
9e78f0fc2a
update for latest main
2024-05-04 14:04:12 -04:00
microproofs
61a021f9e3
update pair to handle alias
2024-05-04 14:04:12 -04:00
microproofs
d05d8e7de6
Start working on separating pairs from 2 tuples in Aiken
...
co-authored-by: KtorZ <matthias.benkort@gmail.com>
2024-05-04 14:04:12 -04:00
KtorZ
db8eb6a108
Provide more context for some panics
...
Actually ran into them both, will open issues about those in a bit.
2024-05-01 12:04:47 +02:00
KtorZ
925a11be69
Check for args length when comparing types. Duh!
...
Fixes #917 .
2024-05-01 10:48:15 +02:00
Micah Kendall
ff4ddfbe1b
Simplifying PR per reviewers request
2024-04-12 21:40:27 -04:00
Micah Kendall
d39dbd6697
fmt
2024-04-12 21:40:27 -04:00
Micah Kendall
d25b8f91c7
feat: Emit keyword
2024-04-12 21:40:27 -04:00
rvcas
b27fcf38e5
fix(check): collapse_links on tuple_index access closes #905
2024-04-02 19:45:16 -04:00
rvcas
7c5b9aa35e
feat(lsp): find_node for TypedArgVia
2024-04-02 19:22:19 -04:00
rvcas
d22ee6e086
chore: remove useless clone
2024-04-02 19:04:33 -04:00
rvcas
e02bc2a58a
feat(lsp): find_node should traverse tail of list
2024-04-02 17:55:04 -04:00
rvcas
b5f27026e2
fix: confusing public validator closes #902
2024-03-29 11:32:04 -04:00
rvcas
ce2c723d0c
chore: remove some dbg macros
2024-03-29 11:28:22 -04:00
microproofs
a5a0734629
fix: casting a field type to Data with expect and traces on was assuming the raw Data was of type constr
2024-03-27 15:52:23 -04:00
rvcas
075668b52e
chore: Release
2024-03-25 22:09:37 -04:00
KtorZ
a3f7b48ec3
Allow downcasting to data in piped function calls.
...
We have been a bit too strict on disallowing 'allow_cast' propagations. This is really only problematic for nested elements like Tuple's elements or App's args. However, for linked and unbound var it is probably okay, and it certainly is as well for function arguments.
2024-03-25 11:57:13 -04:00
KtorZ
4e8042fd06
chore: Release
2024-03-22 16:10:17 +01:00
KtorZ
96387e3437
Fixes #767
...
Co-authored-by: @rvcas <x@rvcas.dev>
2024-03-22 16:05:32 +01:00
rvcas
a09069b828
fix: binop associativity formatting
...
it seems we can fix this by changing which side
gets subtracted by 1 depending on the op associativity.
BinOp::Or & BinOp::And are right associative while the
other bin ops are left associative.
closes #893
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-03-21 20:12:49 -04:00
KtorZ
0f9dbfd874
Fixes #883 .
2024-03-21 18:20:19 +01:00
rvcas
ee280bc309
fix: only allow casting on top level Data
2024-03-21 11:59:34 -04:00
rvcas
c20ff6b160
fix: contains_opaque was never intended to be used for type equality
2024-03-21 11:59:34 -04:00
KtorZ
5cec2544b3
Nonsensical prints to be removed.
2024-03-21 11:59:34 -04:00
KtorZ
25e9db4f6c
Rename t1 -> lhs, t2 -> rhs in unify.
2024-03-21 11:59:34 -04:00
KtorZ
dc9bab4f5c
Add extra test case.
2024-03-21 11:59:34 -04:00
KtorZ
bee2b712de
Fixes #881 .
2024-03-21 11:59:34 -04:00
rvcas
4f8e900aac
fix: Discard not taken into account in backpassing
...
closes #890
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-03-20 17:53:17 -04:00
rvcas
898ef74457
fix: spans for backpassing args
...
closes #882
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2024-03-20 17:27:17 -04:00
microproofs
61936cb91e
fix(codegen): Add tracing when checking for a constr vs another primitive
2024-03-17 16:25:17 -04:00
KtorZ
cdf564fc9d
Expand 'ExpectOnOpaqueType' error help and label.
2024-03-14 11:20:34 +01:00
KtorZ
3055c5ef52
Do not allow casting when rhs or lhs contain an opaque type.
...
Also slightly extended the check test 'framework' to allow registering side-dependency and using them from another module. This allows to check the interplay between opaque type from within and outside of their host module.
2024-03-14 11:00:17 +01:00
rvcas
191a3e9134
chore: weird thing from rebase
2024-03-13 20:21:33 -04:00
rvcas
e71470747f
feat: fix some tests and add a failing one
2024-03-13 20:18:56 -04:00
KtorZ
9127dcdd6e
Add note on the type-casting check.
2024-03-13 20:18:56 -04:00