Add derive-key tests for derived hash

This commit is contained in:
Ayaz Hafiz 2023-03-22 10:19:14 -05:00
parent e6cac71ca5
commit d9c7010104
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
2 changed files with 24 additions and 0 deletions

View file

@ -28,6 +28,11 @@ test_key_eq! {
explicit_empty_record_and_implicit_empty_record:
v!(EMPTY_RECORD), v!({})
same_tuple:
v!((v!(U8), v!(U16),)), v!((v!(U8), v!(U16),))
same_tuple_fields_diff_types:
v!((v!(U8), v!(U16),)), v!((v!(U32), v!(U64),))
same_tag_union:
v!([ A v!(U8) v!(STR), B v!(STR) ]), v!([ A v!(U8) v!(STR), B v!(STR) ])
same_tag_union_tags_diff_types:
@ -51,6 +56,9 @@ test_key_neq! {
record_empty_vs_nonempty:
v!(EMPTY_RECORD), v!({ a: v!(U8), })
different_tuple_arities:
v!((v!(U8), v!(U16),)), v!((v!(U8), v!(U16), v!(U32),))
different_tag_union_tags:
v!([ A v!(U8) ]), v!([ B v!(U8) ])
tag_union_empty_vs_nonempty:

View file

@ -89,6 +89,22 @@ macro_rules! v {
roc_derive::synth_var(subs, Content::Structure(FlatType::Record(fields, ext)))
}
}};
(( $($make_v:expr,)* )$( $($ext:tt)+ )?) => {{
#[allow(unused)]
use roc_types::subs::{Subs, RecordFields, Content, FlatType, Variable, TupleElems};
|subs: &mut Subs| {
let elems = [
$($make_v(subs),)*
].into_iter().enumerate();
let elems = TupleElems::insert_into_subs(subs, elems);
#[allow(unused_mut, unused)]
let mut ext = Variable::EMPTY_TUPLE;
$( ext = $crate::v!($($ext)+)(subs); )?
roc_derive::synth_var(subs, Content::Structure(FlatType::Tuple(elems, ext)))
}
}};
([ $($tag:ident $($payload:expr)*),* ] as $rec_var:ident) => {{
use roc_types::subs::{Subs, SubsIndex, Variable, Content, FlatType, TagExt, UnionTags};
use roc_module::ident::TagName;