mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 23:31:12 +00:00

Otherwise we get some weird panics in borrow, I think something is going wrong with let-generalization
51 lines
2 KiB
Rust
51 lines
2 KiB
Rust
#![cfg(test)]
|
|
// Even with #[allow(non_snake_case)] on individual idents, rust-analyzer issues diagnostics.
|
|
// See https://github.com/rust-lang/rust-analyzer/issues/6541.
|
|
// For the `v!` macro we use uppercase variables when constructing tag unions.
|
|
#![allow(non_snake_case)]
|
|
|
|
use crate::{
|
|
util::{check_immediate, derive_test},
|
|
v,
|
|
};
|
|
use insta::assert_snapshot;
|
|
use roc_module::symbol::Symbol;
|
|
use roc_types::subs::Variable;
|
|
|
|
use roc_derive_key::DeriveBuiltin::Decoder;
|
|
|
|
#[test]
|
|
fn immediates() {
|
|
check_immediate(Decoder, v!(U8), Symbol::DECODE_U8);
|
|
check_immediate(Decoder, v!(U16), Symbol::DECODE_U16);
|
|
check_immediate(Decoder, v!(U32), Symbol::DECODE_U32);
|
|
check_immediate(Decoder, v!(U64), Symbol::DECODE_U64);
|
|
check_immediate(Decoder, v!(U128), Symbol::DECODE_U128);
|
|
check_immediate(Decoder, v!(I8), Symbol::DECODE_I8);
|
|
check_immediate(Decoder, v!(I16), Symbol::DECODE_I16);
|
|
check_immediate(Decoder, v!(I32), Symbol::DECODE_I32);
|
|
check_immediate(Decoder, v!(I64), Symbol::DECODE_I64);
|
|
check_immediate(Decoder, v!(I128), Symbol::DECODE_I128);
|
|
check_immediate(Decoder, v!(DEC), Symbol::DECODE_DEC);
|
|
check_immediate(Decoder, v!(F32), Symbol::DECODE_F32);
|
|
check_immediate(Decoder, v!(F64), Symbol::DECODE_F64);
|
|
check_immediate(Decoder, v!(STR), Symbol::DECODE_STRING);
|
|
}
|
|
|
|
#[test]
|
|
fn list() {
|
|
derive_test(Decoder, v!(Symbol::LIST_LIST v!(STR)), |golden| {
|
|
assert_snapshot!(golden, @r###"
|
|
# derived for List Str
|
|
# Decoder (List val) fmt | fmt has DecoderFormatting, val has Decoding
|
|
# List U8, fmt -[[custom(3)]]-> { rest : List U8, result : [Err [TooShort], Ok (List val)] } | fmt has DecoderFormatting, val has Decoding
|
|
# Specialization lambda sets:
|
|
# @<1>: [[custom(3)]]
|
|
#Derived.decoder_list =
|
|
Decode.custom
|
|
\#Derived.bytes, #Derived.fmt ->
|
|
Decode.decodeWith #Derived.bytes (Decode.list Decode.decoder) #Derived.fmt
|
|
"###
|
|
)
|
|
})
|
|
}
|