CHECKPOINT: Everything builds again.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use crate::eval::PrimitiveType;
|
||||
use crate::ir::{
|
||||
Expression, Primitive, Program, TopLevel, Type, TypeWithVoid, Value, ValueOrRef, Variable,
|
||||
Expression, Name, Primitive, Program, TopLevel, Type, TypeWithVoid, Value, ValueOrRef,
|
||||
};
|
||||
use crate::syntax::Location;
|
||||
use crate::util::scoped_map::ScopedMap;
|
||||
@@ -216,8 +216,9 @@ impl ProgramTree {
|
||||
}
|
||||
|
||||
let current = Program {
|
||||
items,
|
||||
functions: HashMap::new(),
|
||||
type_definitions: HashMap::new(),
|
||||
body: unimplemented!(),
|
||||
};
|
||||
|
||||
ProgramTree { _rng: rng, current }
|
||||
@@ -284,7 +285,7 @@ impl ExpressionTree {
|
||||
|
||||
fn generate_random_expression(
|
||||
rng: &mut TestRng,
|
||||
env: &mut ScopedMap<Variable, Type>,
|
||||
env: &mut ScopedMap<Name, Type>,
|
||||
) -> Expression<Type> {
|
||||
match EXPRESSION_TYPE_FREQUENCIES[EXPRESSION_TYPE_DISTRIBUTION.sample(rng)].0 {
|
||||
ExpressionType::Atomic => Expression::Atomic(generate_random_valueref(rng, env, None)),
|
||||
@@ -401,10 +402,7 @@ fn generate_random_expression(
|
||||
}
|
||||
}
|
||||
|
||||
fn generate_random_binding(
|
||||
rng: &mut TestRng,
|
||||
env: &mut ScopedMap<Variable, Type>,
|
||||
) -> Expression<Type> {
|
||||
fn generate_random_binding(rng: &mut TestRng, env: &mut ScopedMap<Name, Type>) -> Expression<Type> {
|
||||
let name = generate_random_name(rng);
|
||||
let expr = generate_random_expression(rng, env);
|
||||
let ty = expr.type_of();
|
||||
@@ -414,7 +412,7 @@ fn generate_random_binding(
|
||||
|
||||
fn generate_random_valueref(
|
||||
rng: &mut TestRng,
|
||||
env: &mut ScopedMap<Variable, Type>,
|
||||
env: &mut ScopedMap<Name, Type>,
|
||||
target_type: Option<PrimitiveType>,
|
||||
) -> ValueOrRef<Type> {
|
||||
let mut bindings = env.bindings();
|
||||
@@ -458,9 +456,9 @@ fn generate_random_valueref(
|
||||
}
|
||||
}
|
||||
|
||||
fn generate_random_name(rng: &mut TestRng) -> Variable {
|
||||
fn generate_random_name(rng: &mut TestRng) -> Name {
|
||||
let start = rng.gen_range('a'..='z');
|
||||
crate::ir::gensym(&format!("{}", start))
|
||||
Name::gensym(start)
|
||||
}
|
||||
|
||||
fn generate_random_argument_type(rng: &mut TestRng) -> Type {
|
||||
|
||||
Reference in New Issue
Block a user