mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 20:28:02 +00:00
Add derive-key tests for derived hash
This commit is contained in:
parent
e6cac71ca5
commit
d9c7010104
2 changed files with 24 additions and 0 deletions
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue