Add Fuzzer to the prelude.
This commit is contained in:
parent
5b4fedd084
commit
93347d8e7b
|
@ -29,7 +29,7 @@ pub const OPTION: &str = "Option";
|
||||||
pub const ORDERING: &str = "Ordering";
|
pub const ORDERING: &str = "Ordering";
|
||||||
pub const REDEEMER_WRAPPER: &str = "RedeemerWrapper";
|
pub const REDEEMER_WRAPPER: &str = "RedeemerWrapper";
|
||||||
pub const PRNG: &str = "PRNG";
|
pub const PRNG: &str = "PRNG";
|
||||||
pub const FUZZER: &str = "FUZZER";
|
pub const FUZZER: &str = "Fuzzer";
|
||||||
|
|
||||||
/// Build a prelude that can be injected
|
/// Build a prelude that can be injected
|
||||||
/// into a compiler pipeline
|
/// into a compiler pipeline
|
||||||
|
@ -482,6 +482,23 @@ pub fn prelude(id_gen: &IdGenerator) -> TypeInfo {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Fuzzer
|
||||||
|
//
|
||||||
|
// pub type Fuzzer<a> =
|
||||||
|
// fn(PRNG) -> Option<(PRNG, a)>
|
||||||
|
|
||||||
|
let fuzzer_value = generic_var(id_gen.next());
|
||||||
|
prelude.types.insert(
|
||||||
|
FUZZER.to_string(),
|
||||||
|
TypeConstructor {
|
||||||
|
location: Span::empty(),
|
||||||
|
parameters: vec![fuzzer_value.clone()],
|
||||||
|
tipo: fuzzer(fuzzer_value),
|
||||||
|
module: "".to_string(),
|
||||||
|
public: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
prelude
|
prelude
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1302,6 +1319,13 @@ pub fn prng() -> Rc<Type> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn fuzzer(a: Rc<Type>) -> Rc<Type> {
|
||||||
|
Rc::new(Type::Fn {
|
||||||
|
args: vec![prng()],
|
||||||
|
ret: option(tuple(vec![prng(), a])),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pub fn list(t: Rc<Type>) -> Rc<Type> {
|
pub fn list(t: Rc<Type>) -> Rc<Type> {
|
||||||
Rc::new(Type::App {
|
Rc::new(Type::App {
|
||||||
public: true,
|
public: true,
|
||||||
|
|
|
@ -2,9 +2,6 @@ use aiken/builtin
|
||||||
|
|
||||||
const max_int: Int = 255
|
const max_int: Int = 255
|
||||||
|
|
||||||
pub type Fuzzer<a> =
|
|
||||||
fn(PRNG) -> Option<(PRNG, a)>
|
|
||||||
|
|
||||||
// Primitives
|
// Primitives
|
||||||
|
|
||||||
pub fn any_int() -> Fuzzer<Int> {
|
pub fn any_int() -> Fuzzer<Int> {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use aiken/dict.{Dict}
|
use aiken/dict.{Dict}
|
||||||
use aiken/fuzz.{Fuzzer}
|
use aiken/fuzz
|
||||||
use aiken/int
|
use aiken/int
|
||||||
|
|
||||||
pub type Season {
|
pub type Season {
|
||||||
|
|
Loading…
Reference in New Issue