Check in gen test for record decoding!

This commit is contained in:
Ayaz Hafiz 2022-08-14 13:18:44 -05:00
parent 44a746b473
commit 60ed17155c
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
2 changed files with 12 additions and 8 deletions

View file

@ -584,9 +584,17 @@ trait DerivableVisitor {
let descend = Self::visit_record(var)?;
if descend.0 {
push_var_slice!(fields.variables());
if !matches!(
subs.get_content_without_compacting(ext),
Content::FlexVar(_) | Content::RigidVar(_)
) {
// TODO: currently, just we suppose the presence of a flex var may
// include more or less things which we can derive. But, we should
// instead recurse here, and add a `t ~ u | u has Decode` constraint as needed.
stack.push(ext);
}
}
}
TagUnion(tags, ext) => {
let descend = Self::visit_tag_union(var)?;
if descend.0 {

View file

@ -954,11 +954,7 @@ fn encode_then_decode_list_of_lists_of_strings() {
}
#[test]
#[cfg(all(
any(feature = "gen-llvm"), // currently fails on gen-wasm
not(feature = "gen-llvm-wasm") // hits a stack limit in wasm3
))]
#[ignore]
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
fn decode_record_two_fields() {
assert_evals_to!(
indoc!(
@ -967,11 +963,11 @@ fn decode_record_two_fields() {
main =
when Str.toUtf8 "{\"first\":\"ab\",\"second\":\"cd\"}" |> Decode.fromBytes Json.fromUtf8 is
Ok { first, second } -> Str.concat first second
Ok {first: "ab", second: "cd"} -> "abcd"
_ -> "something went wrong"
"#
),
RocStr::from("ab "),
RocStr::from("abcd"),
RocStr
)
}