#![no_main]
-use bigint_presentation_code_register_allocator::function::{FnFields, Function};
-use libfuzzer_sys::fuzz_target;
+use bigint_presentation_code_register_allocator::{
+ function::{FnFields, Function},
+ interned::GlobalState,
+};
+use libfuzzer_sys::{
+ arbitrary::{Arbitrary, Unstructured},
+ fuzz_target, Corpus,
+};
-fuzz_target!(|fields: FnFields| {
- Function::new(fields).expect("should succeed");
+fuzz_target!(|data: &[u8]| -> Corpus {
+ GlobalState::scope(|| {
+ let u = Unstructured::new(data);
+ let Ok(fields) = FnFields::arbitrary_take_rest(u) else {
+ return Corpus::Reject;
+ };
+ Function::new(fields).expect("should succeed");
+ Corpus::Keep
+ })
});