Skip to content

Commit

Permalink
Merge pull request #79 from neighbour-hoods/fix-hc-wasm-2
Browse files Browse the repository at this point in the history
fix hc wasm 2
  • Loading branch information
mhuesch authored Jul 11, 2022
2 parents 48ef57a + 4065f79 commit 364213a
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 829 deletions.
135 changes: 43 additions & 92 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions rep_lang_concrete_syntax/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ license-file = "../LICENSE"
[dependencies]
combine = "4.6.4"
pretty = "0.11.3"
quickcheck = "1.0.3"
quickcheck = "0.9.2"
rep_lang_core = { path = "../rep_lang_core" }

[dev-dependencies]
quickcheck_macros = "1.0.0"
quickcheck_macros = "0.9.1"
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use crate::parse::reserved;
pub struct WrappedExpr(pub Expr);

impl Arbitrary for WrappedExpr {
fn arbitrary(g: &mut Gen) -> WrappedExpr {
fn arbitrary<G: Gen>(g: &mut G) -> WrappedExpr {
WrappedExpr(arbitrary_expr(g, &reserved()))
}

Expand Down
4 changes: 2 additions & 2 deletions rep_lang_core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ license-file = "../LICENSE"
[dependencies]
hdk = { version = "0.0.136", optional = true }
holochain_serialized_bytes_derive = { version = "0.0.51", optional = true }
quickcheck = "1.0.3"
rand = "0.8.5"
quickcheck = "0.9.2"
rand = "0.7"
serde = { version = "1.0", optional = true }

[features]
Expand Down
41 changes: 18 additions & 23 deletions rep_lang_core/src/test_helpers/abstract_syntax.rs
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
use quickcheck::{empty_shrinker, single_shrinker, Arbitrary, Gen};
use rand::Rng;
use std::iter;

use crate::abstract_syntax::*;

// this code is unused within this crate because it's library code. we know
// that, so we disable the warnings.
#[allow(dead_code)]
pub fn arbitrary_expr(g: &mut Gen, reserved: &[String]) -> Expr {
pub fn arbitrary_expr<G: Gen>(g: &mut G, reserved: &[String]) -> Expr {
gen_expr(g, g.size(), reserved)
}

impl Arbitrary for Expr {
fn arbitrary(_g: &mut Gen) -> Expr {
fn arbitrary<G: Gen>(_g: &mut G) -> Expr {
panic!("don't use this - use arbitrary_expr")
}

Expand Down Expand Up @@ -72,10 +73,9 @@ impl Arbitrary for Expr {
// by passing an explicit size parameter, we can implement this directly - dividing the size
// parameter as we recur, and terminating when it hits a bound.
#[allow(dead_code)]
pub fn gen_expr(g: &mut Gen, size: usize, reserved: &[String]) -> Expr {
pub fn gen_expr<G: Gen>(g: &mut G, size: usize, reserved: &[String]) -> Expr {
let upper_bound = if size < 1 { 3 } else { 8 };
let range: Vec<_> = (0..upper_bound).collect();
match g.choose(&range).unwrap() {
match g.gen_range(0, upper_bound) {
0 => Expr::Var(arbitrary_name(g, reserved)),
1 => Expr::Lit(arbitrary_lit(g)),
2 => Expr::Prim(arbitrary_primop(g)),
Expand Down Expand Up @@ -110,19 +110,17 @@ pub fn gen_expr(g: &mut Gen, size: usize, reserved: &[String]) -> Expr {
}

#[allow(dead_code)]
pub fn arbitrary_lit(g: &mut Gen) -> Lit {
let range: Vec<_> = (0..2).collect();
match g.choose(&range).unwrap() {
pub fn arbitrary_lit<G: Gen>(g: &mut G) -> Lit {
match g.gen_range(0, 2) {
0 => Lit::LInt(i64::arbitrary(g)),
1 => Lit::LBool(bool::arbitrary(g)),
_ => panic!("impossible: Arbitrary: Lit: gen out of bounds"),
}
}

#[allow(dead_code)]
pub fn arbitrary_name(g: &mut Gen, reserved: &[String]) -> Name {
let range: Vec<_> = (3..8).collect();
let len = g.choose(&range).unwrap();
pub fn arbitrary_name<G: Gen>(g: &mut G, reserved: &[String]) -> Name {
let len = g.gen_range(3, 8);
loop {
let s0 = gen_alpha_char(g);
let mut s: String = iter::repeat(gen_name(g)).take(len - 1).collect();
Expand All @@ -133,9 +131,8 @@ pub fn arbitrary_name(g: &mut Gen, reserved: &[String]) -> Name {
}
}

pub fn arbitrary_primop(g: &mut Gen) -> PrimOp {
let range: Vec<_> = (0..17).collect();
match g.choose(&range).unwrap() {
pub fn arbitrary_primop<G: Gen>(g: &mut G) -> PrimOp {
match g.gen_range(0, 17) {
0 => PrimOp::Add,
1 => PrimOp::Sub,
2 => PrimOp::Mul,
Expand All @@ -158,23 +155,21 @@ pub fn arbitrary_primop(g: &mut Gen) -> PrimOp {
}

impl Arbitrary for PrimOp {
fn arbitrary(g: &mut Gen) -> PrimOp {
fn arbitrary<G: Gen>(g: &mut G) -> PrimOp {
arbitrary_primop(g)
}
}

fn gen_alpha_char(g: &mut Gen) -> char {
fn gen_alpha_char<G: Gen>(g: &mut G) -> char {
const ALPHA_CHARSET: &[u8] = b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const RANGE: usize = ALPHA_CHARSET.len();
let range: Vec<_> = (0..RANGE).collect();
let idx = g.choose(&range).unwrap();
ALPHA_CHARSET[*idx as usize] as char
let idx = g.gen_range(0, RANGE);
ALPHA_CHARSET[idx as usize] as char
}

fn gen_name(g: &mut Gen) -> char {
fn gen_name<G: Gen>(g: &mut G) -> char {
const CHARSET: &[u8] = b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-";
const RANGE: usize = CHARSET.len();
let range: Vec<_> = (0..RANGE).collect();
let idx = g.choose(&range).unwrap();
CHARSET[*idx as usize] as char
let idx = g.gen_range(0, RANGE);
CHARSET[idx as usize] as char
}
Loading

0 comments on commit 364213a

Please sign in to comment.