Support derivation of Hash for Str and List

This commit is contained in:
Ayaz Hafiz 2022-10-04 14:07:16 -05:00
parent 294244ae25
commit 5b833e57b5
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
9 changed files with 143 additions and 28 deletions

View file

@ -4,7 +4,7 @@
// For the `v!` macro we use uppercase variables when constructing tag unions.
#![allow(non_snake_case)]
use crate::{util::check_immediate, v};
use crate::{util::check_single_lset_immediate, v};
use roc_module::symbol::Symbol;
use roc_types::subs::Variable;
@ -12,14 +12,17 @@ use roc_derive_key::DeriveBuiltin::Hash;
#[test]
fn immediates() {
check_immediate(Hash, v!(U8), Symbol::HASH_ADD_U8);
check_immediate(Hash, v!(U16), Symbol::HASH_ADD_U16);
check_immediate(Hash, v!(U32), Symbol::HASH_ADD_U32);
check_immediate(Hash, v!(U64), Symbol::HASH_ADD_U64);
check_immediate(Hash, v!(U128), Symbol::HASH_ADD_U128);
check_immediate(Hash, v!(I8), Symbol::HASH_ADD_I8);
check_immediate(Hash, v!(I16), Symbol::HASH_ADD_I16);
check_immediate(Hash, v!(I32), Symbol::HASH_ADD_I32);
check_immediate(Hash, v!(I64), Symbol::HASH_ADD_I64);
check_immediate(Hash, v!(I128), Symbol::HASH_ADD_I128);
check_single_lset_immediate(Hash, v!(U8), Symbol::HASH_ADD_U8);
check_single_lset_immediate(Hash, v!(U16), Symbol::HASH_ADD_U16);
check_single_lset_immediate(Hash, v!(U32), Symbol::HASH_ADD_U32);
check_single_lset_immediate(Hash, v!(U64), Symbol::HASH_ADD_U64);
check_single_lset_immediate(Hash, v!(U128), Symbol::HASH_ADD_U128);
check_single_lset_immediate(Hash, v!(I8), Symbol::HASH_ADD_I8);
check_single_lset_immediate(Hash, v!(I16), Symbol::HASH_ADD_I16);
check_single_lset_immediate(Hash, v!(I32), Symbol::HASH_ADD_I32);
check_single_lset_immediate(Hash, v!(I64), Symbol::HASH_ADD_I64);
check_single_lset_immediate(Hash, v!(I128), Symbol::HASH_ADD_I128);
check_single_lset_immediate(Hash, v!(STR), Symbol::HASH_HASH_STR_BYTES);
check_single_lset_immediate(Hash, v!(Symbol::LIST_LIST v!(U8)), Symbol::HASH_HASH_LIST);
check_single_lset_immediate(Hash, v!(Symbol::LIST_LIST v!(STR)), Symbol::HASH_HASH_LIST);
}