roc/crates/compiler/test_syntax/fuzz/fuzz_targets/fuzz_expr.rs
2025-01-11 20:24:35 -08:00

24 lines
640 B
Rust

#![no_main]
use bumpalo::Bump;
use libfuzzer_sys::fuzz_target;
use roc_parse::ast::Malformed;
use test_syntax::test_helpers::Input;
fuzz_target!(|data: &[u8]| {
let canonicalize_fuzz_config = if cfg!(feature = "fuzz_canonicalize") {
Some(false)
} else {
None
};
if let Ok(input) = std::str::from_utf8(data) {
let input = Input::Expr(input);
let arena = Bump::new();
let ast = input.parse_in(&arena);
if let Ok(ast) = ast {
if !ast.is_malformed() {
input.check_invariants(|_| (), true, canonicalize_fuzz_config);
}
}
}
});