From 88dc8539b5a547bddf3d26b414284d81bada40ee Mon Sep 17 00:00:00 2001 From: imxyy_soope_ Date: Sat, 4 Apr 2026 02:13:39 +0800 Subject: [PATCH] refactor test --- fix/src/codegen.rs | 10 +- fix/src/disassembler.rs | 14 +- fix/src/downgrade.rs | 5 +- fix/src/ir.rs | 4 +- fix/src/runtime/vm.rs | 39 ++-- fix/tests/tests/lang.rs | 460 ++++++++++++++++++++-------------------- 6 files changed, 279 insertions(+), 253 deletions(-) diff --git a/fix/src/codegen.rs b/fix/src/codegen.rs index 7068017..c4876d9 100644 --- a/fix/src/codegen.rs +++ b/fix/src/codegen.rs @@ -430,10 +430,7 @@ impl<'a, Ctx: BytecodeContext> BytecodeEmitter<'a, Ctx> { .enumerate() .map(|(i, &id)| (id, thunk_base + i as u32)) .collect(); - self.scope_stack.push(ScopeInfo { - depth, - thunk_map, - }); + self.scope_stack.push(ScopeInfo { depth, thunk_map }); } fn pop_scope(&mut self) { @@ -577,10 +574,7 @@ impl<'a, Ctx: BytecodeContext> BytecodeEmitter<'a, Ctx> { self.emit_u32(span_id); } &Ir::Arg { layer } => { - self.emit_load( - layer.try_into().expect("scope too deep!"), - 0, - ); + self.emit_load(layer.try_into().expect("scope too deep!"), 0); } &Ir::TopLevel { body, ref thunks } => { self.emit_toplevel_inner(body, thunks); diff --git a/fix/src/disassembler.rs b/fix/src/disassembler.rs index 415ddcd..48d2658 100644 --- a/fix/src/disassembler.rs +++ b/fix/src/disassembler.rs @@ -140,15 +140,23 @@ impl<'a, Ctx: DisassemblerContext> Disassembler<'a, Ctx> { temp }; - let extra_width = if start_pos > 0 { start_pos.ilog2() >> 4 } else { 0 }; + let extra_width = if start_pos > 0 { + start_pos.ilog2() >> 4 + } else { + 0 + }; if color { let _ = write!(out, " "); - for _ in 0..extra_width { let _ = write!(out, " "); } + for _ in 0..extra_width { + let _ = write!(out, " "); + } let _ = writeln!(out, " {:<14} |", bytes_str.green()); } else { let _ = write!(out, " "); - for _ in 0..extra_width { let _ = write!(out, " "); } + for _ in 0..extra_width { + let _ = write!(out, " "); + } let _ = writeln!(out, " {:<14} |", bytes_str); } } diff --git a/fix/src/downgrade.rs b/fix/src/downgrade.rs index c2283c7..a7b04af 100644 --- a/fix/src/downgrade.rs +++ b/fix/src/downgrade.rs @@ -394,8 +394,7 @@ impl<'id: 'ir, 'ir, Ctx: DowngradeContext<'id, 'ir>> Downgrade<'id, 'ir, Ctx> fo let param_sym = ctx.new_sym(id.to_string()); param = None; - body = ctx - .with_param_scope(param_sym, |ctx| body_ast.downgrade(ctx))?; + body = ctx.with_param_scope(param_sym, |ctx| body_ast.downgrade(ctx))?; } ast::Param::Pattern(pattern) => { let alias = pattern @@ -992,7 +991,7 @@ where } } - let arg= ctx.new_expr(Ir::Arg { layer: 0 }); + let arg = ctx.new_expr(Ir::Arg { layer: 0 }); ctx.with_let_scope(&keys, |ctx| { let vals = params .into_iter() diff --git a/fix/src/ir.rs b/fix/src/ir.rs index 70d1906..74dea37 100644 --- a/fix/src/ir.rs +++ b/fix/src/ir.rs @@ -128,7 +128,9 @@ pub enum Ir<'ir, Ref> { param: Option>, thunks: Vec<'ir, (ThunkId, Ref)>, }, - Arg { layer: usize }, + Arg { + layer: usize, + }, Call { func: Ref, arg: Ref, diff --git a/fix/src/runtime/vm.rs b/fix/src/runtime/vm.rs index eb01ee7..5e533b2 100644 --- a/fix/src/runtime/vm.rs +++ b/fix/src/runtime/vm.rs @@ -94,6 +94,7 @@ impl<'gc> GcRoot<'gc> { } #[inline(always)] + #[track_caller] pub(super) fn pop_stack_forced(&mut self) -> StrictValue<'gc> { self.stack .pop() @@ -1282,7 +1283,10 @@ impl Runtime { let (is_list, is_attrs) = self.arena.mutate_root(|_, root| { let tos = *root.stack.tos().expect("stack underflow"); - (tos.as_gc::>().is_some(), tos.as_gc::>().is_some()) + ( + tos.as_gc::>().is_some(), + tos.as_gc::>().is_some(), + ) }); if is_list { @@ -1303,7 +1307,8 @@ impl Runtime { }); if let err @ Action::Done(Err(_)) = self.force_tos() { - self.arena.mutate_root(|_, root| root.temp_stack.truncate(eval_base - len)); + self.arena + .mutate_root(|_, root| root.temp_stack.truncate(eval_base - len)); return err; } @@ -1314,14 +1319,16 @@ impl Runtime { } self.arena.mutate_root(|mc, root| { - let items: SmallVec<[Value; 4]> = root.temp_stack[eval_base - len..eval_base].iter().copied().collect(); + let items: SmallVec<[Value; 4]> = root.temp_stack[eval_base - len..eval_base] + .iter() + .copied() + .collect(); root.temp_stack.truncate(eval_base - len); - + // Reconstruct List let new_list = Gc::new(mc, List { inner: items }); root.push_stack(Value::new_gc(new_list)); }); - } else if is_attrs { let len = self.arena.mutate_root(|_, root| { let attrs = root.pop_stack().as_gc::>().unwrap(); @@ -1341,7 +1348,8 @@ impl Runtime { }); if let err @ Action::Done(Err(_)) = self.force_tos() { - self.arena.mutate_root(|_, root| root.temp_stack.truncate(eval_base - len * 2)); + self.arena + .mutate_root(|_, root| root.temp_stack.truncate(eval_base - len * 2)); return err; } @@ -1362,7 +1370,7 @@ impl Runtime { } kv.sort_by_key(|(k, _)| *k); root.temp_stack.truncate(eval_base - len * 2); - + let new_attrs = Gc::new(mc, unsafe { AttrSet::from_sorted_unchecked(kv) }); root.push_stack(Value::new_gc(new_attrs)); }); @@ -1378,7 +1386,10 @@ impl Runtime { let (is_list, is_attrs) = self.arena.mutate_root(|_, root| { let tos = *root.stack.tos().expect("stack underflow"); - (tos.as_gc::>().is_some(), tos.as_gc::>().is_some()) + ( + tos.as_gc::>().is_some(), + tos.as_gc::>().is_some(), + ) }); if is_list { @@ -1399,7 +1410,8 @@ impl Runtime { }); if let err @ Action::Done(Err(_)) = self.force_tos_deep() { - self.arena.mutate_root(|_, root| root.temp_stack.truncate(eval_base - len)); + self.arena + .mutate_root(|_, root| root.temp_stack.truncate(eval_base - len)); return err; } @@ -1410,12 +1422,14 @@ impl Runtime { } self.arena.mutate_root(|mc, root| { - let items: SmallVec<[Value; 4]> = root.temp_stack[eval_base - len..eval_base].iter().copied().collect(); + let items: SmallVec<[Value; 4]> = root.temp_stack[eval_base - len..eval_base] + .iter() + .copied() + .collect(); root.temp_stack.truncate(eval_base - len); let new_list = Gc::new(mc, List { inner: items }); root.push_stack(Value::new_gc(new_list)); }); - } else if is_attrs { let len = self.arena.mutate_root(|_, root| { let attrs = root.pop_stack().as_gc::>().unwrap(); @@ -1435,7 +1449,8 @@ impl Runtime { }); if let err @ Action::Done(Err(_)) = self.force_tos_deep() { - self.arena.mutate_root(|_, root| root.temp_stack.truncate(eval_base - len * 2)); + self.arena + .mutate_root(|_, root| root.temp_stack.truncate(eval_base - len * 2)); return err; } diff --git a/fix/tests/tests/lang.rs b/fix/tests/tests/lang.rs index fd86e00..3d8bb97 100644 --- a/fix/tests/tests/lang.rs +++ b/fix/tests/tests/lang.rs @@ -89,230 +89,238 @@ macro_rules! eval_fail_test { }; } -eval_okay_test!(any_all); -eval_okay_test!(arithmetic); -eval_okay_test!(attrnames); -eval_okay_test!(attrs); -eval_okay_test!(attrs2); -eval_okay_test!(attrs3); -eval_okay_test!(attrs4); -eval_okay_test!(attrs5); -eval_okay_test!( - #[ignore = "__overrides is not supported"] - attrs6 -); -eval_okay_test!( - #[ignore = "requires --arg/--argstr CLI flags"] - autoargs -); -eval_okay_test!(backslash_newline_1); -eval_okay_test!(backslash_newline_2); -eval_okay_test!(baseNameOf); -eval_okay_test!(builtins); -eval_okay_test!(builtins_add); -eval_okay_test!(callable_attrs); -eval_okay_test!(catattrs); -eval_okay_test!(closure); -eval_okay_test!(comments); -eval_okay_test!(concat); -eval_okay_test!(concatmap); -eval_okay_test!(concatstringssep); -eval_okay_test!(context); -eval_okay_test!(context_introspection); -eval_okay_test!(convertHash); -eval_okay_test!(curpos); -eval_okay_test!(deepseq); -eval_okay_test!(delayed_with); -eval_okay_test!(delayed_with_inherit); -eval_okay_test!(deprecate_cursed_or); -eval_okay_test!(derivation_legacy); -eval_okay_test!(dynamic_attrs); -eval_okay_test!(dynamic_attrs_2); -eval_okay_test!(dynamic_attrs_bare); -eval_okay_test!(elem); -eval_okay_test!(empty_args); -eval_okay_test!(eq); -eval_okay_test!(eq_derivations); -eval_okay_test!(filter); -eval_okay_test!( - #[ignore = "not implemented: flakeRefToString"] - flake_ref_to_string -); -eval_okay_test!(flatten); -eval_okay_test!(float); -eval_okay_test!(floor_ceil); -eval_okay_test!(foldlStrict); -eval_okay_test!(foldlStrict_lazy_elements); -eval_okay_test!(foldlStrict_lazy_initial_accumulator); -eval_okay_test!(fromjson); -eval_okay_test!(fromjson_escapes); -eval_okay_test!(fromTOML); -eval_okay_test!( - #[ignore = "timestamps are not supported"] - fromTOML_timestamps -); -eval_okay_test!(functionargs); -eval_okay_test!(hashfile); -eval_okay_test!(hashstring); -eval_okay_test!(getattrpos); -eval_okay_test!(getattrpos_functionargs); -eval_okay_test!(getattrpos_undefined); -eval_okay_test!(getenv, || { - unsafe { std::env::set_var("TEST_VAR", "foo") }; -}); -eval_okay_test!(groupBy); -eval_okay_test!(r#if); -eval_okay_test!(ind_string); -eval_okay_test!(import); -eval_okay_test!(inherit_attr_pos); -eval_okay_test!( - #[ignore = "__overrides is not supported"] - inherit_from -); -eval_okay_test!(intersectAttrs); -eval_okay_test!(r#let); -eval_okay_test!(list); -eval_okay_test!(listtoattrs); -eval_okay_test!(logic); -eval_okay_test!(map); -eval_okay_test!(mapattrs); -eval_okay_test!(merge_dynamic_attrs); -eval_okay_test!(nested_with); -eval_okay_test!(new_let); -eval_okay_test!(null_dynamic_attrs); -eval_okay_test!( - #[ignore = "__overrides is not supported"] - overrides -); -eval_okay_test!( - #[ignore = "not implemented: parseFlakeRef"] - parse_flake_ref -); -eval_okay_test!(partition); -eval_okay_test!(path); -eval_okay_test!(pathexists); -eval_okay_test!(path_string_interpolation, || { - unsafe { - std::env::set_var("HOME", "/fake-home"); - } -}); -eval_okay_test!(patterns); -eval_okay_test!(print); -eval_okay_test!(readDir); -eval_okay_test!(readfile); -eval_okay_test!(readFileType); -eval_okay_test!(redefine_builtin); -eval_okay_test!(regex_match); -eval_okay_test!(regex_split); -eval_okay_test!(regression_20220122); -eval_okay_test!(regression_20220125); -eval_okay_test!(regrettable_rec_attrset_merge); -eval_okay_test!(remove); -eval_okay_test!(repeated_empty_attrs); -eval_okay_test!(repeated_empty_list); -eval_okay_test!(replacestrings); -eval_okay_test!( - #[ignore = "requires -I CLI flags"] - search_path -); -eval_okay_test!(scope_1); -eval_okay_test!(scope_2); -eval_okay_test!(scope_3); -eval_okay_test!(scope_4); -eval_okay_test!(scope_6); -eval_okay_test!(scope_7); -eval_okay_test!(seq); -eval_okay_test!(sort); -eval_okay_test!(splitversion); -eval_okay_test!(string); -eval_okay_test!(strings_as_attrs_names); -eval_okay_test!(substring); -eval_okay_test!(substring_context); -eval_okay_test!(symlink_resolution); -eval_okay_test!( - #[ignore = "TCO not implemented, also disabled in CppNix"] - tail_call_1 -); -eval_okay_test!(tojson); -eval_okay_test!(toxml); -eval_okay_test!(toxml2); -eval_okay_test!(tryeval); -eval_okay_test!(types); -eval_okay_test!(versions); -eval_okay_test!(with); -eval_okay_test!(zipAttrsWith); +mod okay { + use super::*; -eval_fail_test!(fail_abort); -eval_fail_test!(fail_addDrvOutputDependencies_empty_context); -eval_fail_test!(fail_addDrvOutputDependencies_multi_elem_context); -eval_fail_test!(fail_addDrvOutputDependencies_wrong_element_kind); -eval_fail_test!(fail_addErrorRuntime_example); -eval_fail_test!(fail_assert); -eval_fail_test!(fail_assert_equal_attrs_names); -eval_fail_test!(fail_assert_equal_attrs_names_2); -eval_fail_test!(fail_assert_equal_derivations); -eval_fail_test!(fail_assert_equal_derivations_extra); -eval_fail_test!(fail_assert_equal_floats); -eval_fail_test!(fail_assert_equal_function_direct); -eval_fail_test!(fail_assert_equal_int_float); -eval_fail_test!(fail_assert_equal_ints); -eval_fail_test!(fail_assert_equal_list_length); -eval_fail_test!(fail_assert_equal_paths); -eval_fail_test!(fail_assert_equal_type); -eval_fail_test!(fail_assert_equal_type_nested); -eval_fail_test!(fail_assert_nested_bool); -eval_fail_test!(fail_attr_name_type); -eval_fail_test!(fail_attrset_merge_drops_later_rec); -eval_fail_test!(fail_bad_string_interpolation_1); -eval_fail_test!(fail_bad_string_interpolation_2); -eval_fail_test!(fail_bad_string_interpolation_3); -eval_fail_test!(fail_bad_string_interpolation_4); -eval_fail_test!(fail_blackhole); -eval_fail_test!(fail_call_primop); -eval_fail_test!(fail_deepseq); -eval_fail_test!(fail_derivation_name); -eval_fail_test!(fail_dup_dynamic_attrs); -eval_fail_test!(fail_duplicate_traces); -eval_fail_test!(fail_eol_1); -eval_fail_test!(fail_eol_2); -eval_fail_test!(fail_eol_3); -eval_fail_test!(fail_fetchTree_negative); -eval_fail_test!(fail_fetchurl_baseName); -eval_fail_test!(fail_fetchurl_baseName_attrs); -eval_fail_test!(fail_fetchurl_baseName_attrs_name); -eval_fail_test!(fail_flake_ref_to_string_negative_integer); -eval_fail_test!(fail_foldlStrict_strict_op_application); -eval_fail_test!(fail_fromJSON_keyWithNullByte); -eval_fail_test!(fail_fromJSON_overflowing); -eval_fail_test!(fail_fromJSON_valueWithNullByte); -eval_fail_test!(fail_fromTOML_keyWithNullByte); -eval_fail_test!(fail_fromTOML_timestamps); -eval_fail_test!(fail_fromTOML_valueWithNullByte); -eval_fail_test!(fail_hashfile_missing); -eval_fail_test!(fail_infinite_recursion_lambda); -eval_fail_test!(fail_list); -eval_fail_test!(fail_missing_arg); -eval_fail_test!(fail_mutual_recursion); -eval_fail_test!(fail_nested_list_items); -eval_fail_test!(fail_nonexist_path); -eval_fail_test!(fail_not_throws); -eval_fail_test!(fail_overflowing_add); -eval_fail_test!(fail_overflowing_div); -eval_fail_test!(fail_overflowing_mul); -eval_fail_test!(fail_overflowing_sub); -eval_fail_test!(fail_path_slash); -eval_fail_test!(fail_pipe_operators); -eval_fail_test!(fail_recursion); -eval_fail_test!(fail_remove); -eval_fail_test!(fail_scope_5); -eval_fail_test!(fail_seq); -eval_fail_test!(fail_set); -eval_fail_test!(fail_set_override); -eval_fail_test!(fail_string_nul_1); -eval_fail_test!(fail_string_nul_2); -eval_fail_test!(fail_substring); -eval_fail_test!(fail_toJSON); -eval_fail_test!(fail_toJSON_non_utf_8); -eval_fail_test!(fail_to_path); -eval_fail_test!(fail_undeclared_arg); -eval_fail_test!(fail_using_set_as_attr_name); + eval_okay_test!(any_all); + eval_okay_test!(arithmetic); + eval_okay_test!(attrnames); + eval_okay_test!(attrs); + eval_okay_test!(attrs2); + eval_okay_test!(attrs3); + eval_okay_test!(attrs4); + eval_okay_test!(attrs5); + eval_okay_test!( + #[ignore = "__overrides is not supported"] + attrs6 + ); + eval_okay_test!( + #[ignore = "requires --arg/--argstr CLI flags"] + autoargs + ); + eval_okay_test!(backslash_newline_1); + eval_okay_test!(backslash_newline_2); + eval_okay_test!(baseNameOf); + eval_okay_test!(builtins); + eval_okay_test!(builtins_add); + eval_okay_test!(callable_attrs); + eval_okay_test!(catattrs); + eval_okay_test!(closure); + eval_okay_test!(comments); + eval_okay_test!(concat); + eval_okay_test!(concatmap); + eval_okay_test!(concatstringssep); + eval_okay_test!(context); + eval_okay_test!(context_introspection); + eval_okay_test!(convertHash); + eval_okay_test!(curpos); + eval_okay_test!(deepseq); + eval_okay_test!(delayed_with); + eval_okay_test!(delayed_with_inherit); + eval_okay_test!(deprecate_cursed_or); + eval_okay_test!(derivation_legacy); + eval_okay_test!(dynamic_attrs); + eval_okay_test!(dynamic_attrs_2); + eval_okay_test!(dynamic_attrs_bare); + eval_okay_test!(elem); + eval_okay_test!(empty_args); + eval_okay_test!(eq); + eval_okay_test!(eq_derivations); + eval_okay_test!(filter); + eval_okay_test!( + #[ignore = "not implemented: flakeRefToString"] + flake_ref_to_string + ); + eval_okay_test!(flatten); + eval_okay_test!(float); + eval_okay_test!(floor_ceil); + eval_okay_test!(foldlStrict); + eval_okay_test!(foldlStrict_lazy_elements); + eval_okay_test!(foldlStrict_lazy_initial_accumulator); + eval_okay_test!(fromjson); + eval_okay_test!(fromjson_escapes); + eval_okay_test!(fromTOML); + eval_okay_test!( + #[ignore = "timestamps are not supported"] + fromTOML_timestamps + ); + eval_okay_test!(functionargs); + eval_okay_test!(hashfile); + eval_okay_test!(hashstring); + eval_okay_test!(getattrpos); + eval_okay_test!(getattrpos_functionargs); + eval_okay_test!(getattrpos_undefined); + eval_okay_test!(getenv, || { + unsafe { std::env::set_var("TEST_VAR", "foo") }; + }); + eval_okay_test!(groupBy); + eval_okay_test!(r#if); + eval_okay_test!(ind_string); + eval_okay_test!(import); + eval_okay_test!(inherit_attr_pos); + eval_okay_test!( + #[ignore = "__overrides is not supported"] + inherit_from + ); + eval_okay_test!(intersectAttrs); + eval_okay_test!(r#let); + eval_okay_test!(list); + eval_okay_test!(listtoattrs); + eval_okay_test!(logic); + eval_okay_test!(map); + eval_okay_test!(mapattrs); + eval_okay_test!(merge_dynamic_attrs); + eval_okay_test!(nested_with); + eval_okay_test!(new_let); + eval_okay_test!(null_dynamic_attrs); + eval_okay_test!( + #[ignore = "__overrides is not supported"] + overrides + ); + eval_okay_test!( + #[ignore = "not implemented: parseFlakeRef"] + parse_flake_ref + ); + eval_okay_test!(partition); + eval_okay_test!(path); + eval_okay_test!(pathexists); + eval_okay_test!(path_string_interpolation, || { + unsafe { + std::env::set_var("HOME", "/fake-home"); + } + }); + eval_okay_test!(patterns); + eval_okay_test!(print); + eval_okay_test!(readDir); + eval_okay_test!(readfile); + eval_okay_test!(readFileType); + eval_okay_test!(redefine_builtin); + eval_okay_test!(regex_match); + eval_okay_test!(regex_split); + eval_okay_test!(regression_20220122); + eval_okay_test!(regression_20220125); + eval_okay_test!(regrettable_rec_attrset_merge); + eval_okay_test!(remove); + eval_okay_test!(repeated_empty_attrs); + eval_okay_test!(repeated_empty_list); + eval_okay_test!(replacestrings); + eval_okay_test!( + #[ignore = "requires -I CLI flags"] + search_path + ); + eval_okay_test!(scope_1); + eval_okay_test!(scope_2); + eval_okay_test!(scope_3); + eval_okay_test!(scope_4); + eval_okay_test!(scope_6); + eval_okay_test!(scope_7); + eval_okay_test!(seq); + eval_okay_test!(sort); + eval_okay_test!(splitversion); + eval_okay_test!(string); + eval_okay_test!(strings_as_attrs_names); + eval_okay_test!(substring); + eval_okay_test!(substring_context); + eval_okay_test!(symlink_resolution); + eval_okay_test!( + #[ignore = "TCO not implemented, also disabled in CppNix"] + tail_call_1 + ); + eval_okay_test!(tojson); + eval_okay_test!(toxml); + eval_okay_test!(toxml2); + eval_okay_test!(tryeval); + eval_okay_test!(types); + eval_okay_test!(versions); + eval_okay_test!(with); + eval_okay_test!(zipAttrsWith); +} + +mod fail { + use super::*; + + eval_fail_test!(abort); + eval_fail_test!(addDrvOutputDependencies_empty_context); + eval_fail_test!(addDrvOutputDependencies_multi_elem_context); + eval_fail_test!(addDrvOutputDependencies_wrong_element_kind); + eval_fail_test!(addErrorRuntime_example); + eval_fail_test!(assert); + eval_fail_test!(assert_equal_attrs_names); + eval_fail_test!(assert_equal_attrs_names_2); + eval_fail_test!(assert_equal_derivations); + eval_fail_test!(assert_equal_derivations_extra); + eval_fail_test!(assert_equal_floats); + eval_fail_test!(assert_equal_function_direct); + eval_fail_test!(assert_equal_int_float); + eval_fail_test!(assert_equal_ints); + eval_fail_test!(assert_equal_list_length); + eval_fail_test!(assert_equal_paths); + eval_fail_test!(assert_equal_type); + eval_fail_test!(assert_equal_type_nested); + eval_fail_test!(assert_nested_bool); + eval_fail_test!(attr_name_type); + eval_fail_test!(attrset_merge_drops_later_rec); + eval_fail_test!(bad_string_interpolation_1); + eval_fail_test!(bad_string_interpolation_2); + eval_fail_test!(bad_string_interpolation_3); + eval_fail_test!(bad_string_interpolation_4); + eval_fail_test!(blackhole); + eval_fail_test!(call_primop); + eval_fail_test!(deepseq); + eval_fail_test!(derivation_name); + eval_fail_test!(dup_dynamic_attrs); + eval_fail_test!(duplicate_traces); + eval_fail_test!(eol_1); + eval_fail_test!(eol_2); + eval_fail_test!(eol_3); + eval_fail_test!(fetchTree_negative); + eval_fail_test!(fetchurl_baseName); + eval_fail_test!(fetchurl_baseName_attrs); + eval_fail_test!(fetchurl_baseName_attrs_name); + eval_fail_test!(flake_ref_to_string_negative_integer); + eval_fail_test!(foldlStrict_strict_op_application); + eval_fail_test!(fromJSON_keyWithNullByte); + eval_fail_test!(fromJSON_overflowing); + eval_fail_test!(fromJSON_valueWithNullByte); + eval_fail_test!(fromTOML_keyWithNullByte); + eval_fail_test!(fromTOML_timestamps); + eval_fail_test!(fromTOML_valueWithNullByte); + eval_fail_test!(hashfile_missing); + eval_fail_test!(infinite_recursion_lambda); + eval_fail_test!(list); + eval_fail_test!(missing_arg); + eval_fail_test!(mutual_recursion); + eval_fail_test!(nested_list_items); + eval_fail_test!(nonexist_path); + eval_fail_test!(not_throws); + eval_fail_test!(overflowing_add); + eval_fail_test!(overflowing_div); + eval_fail_test!(overflowing_mul); + eval_fail_test!(overflowing_sub); + eval_fail_test!(path_slash); + eval_fail_test!(pipe_operators); + eval_fail_test!(recursion); + eval_fail_test!(remove); + eval_fail_test!(scope_5); + eval_fail_test!(seq); + eval_fail_test!(set); + eval_fail_test!(set_override); + eval_fail_test!(string_nul_1); + eval_fail_test!(string_nul_2); + eval_fail_test!(substring); + eval_fail_test!(toJSON); + eval_fail_test!(toJSON_non_utf_8); + eval_fail_test!(to_path); + eval_fail_test!(undeclared_arg); + eval_fail_test!(using_set_as_attr_name); +}