Skip to content

Commit e710f2a

Browse files
committed
add test crate items
1 parent ad45ac1 commit e710f2a

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

crates/formality-check/src/lib.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::{collections::VecDeque, fmt::Debug};
55
use anyhow::bail;
66
use formality_prove::{Decls, Env};
77
use formality_rust::{
8-
grammar::{Crate, CrateItem, Program},
8+
grammar::{Crate, CrateItem, Program, Test, TestBoundData},
99
prove::ToWcs,
1010
};
1111
use formality_types::grammar::{Fallible, Substitution, Wcs};
@@ -83,9 +83,16 @@ impl Check<'_> {
8383
CrateItem::Enum(e) => self.check_adt(&e.to_adt()),
8484
CrateItem::Fn(f) => self.check_free_fn(f),
8585
CrateItem::NegTraitImpl(i) => self.check_neg_trait_impl(i),
86+
CrateItem::Test(t) => self.check_test(t),
8687
}
8788
}
8889

90+
fn check_test(&self, test: &Test) -> Fallible<()> {
91+
let mut env = Env::default();
92+
let TestBoundData { assumptions, goals } = env.instantiate_universally(&test.binder);
93+
self.prove_goal(&env, assumptions, goals)
94+
}
95+
8996
fn prove_goal(
9097
&self,
9198
env: &Env,

crates/formality-rust/src/grammar.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,19 @@ pub enum CrateItem {
6464
NegTraitImpl(NegTraitImpl),
6565
#[cast]
6666
Fn(Fn),
67+
#[cast]
68+
Test(Test),
69+
}
70+
71+
#[term(test $binder)]
72+
pub struct Test {
73+
pub binder: Binder<TestBoundData>,
74+
}
75+
76+
#[term($:where $,assumptions { $,goals })]
77+
pub struct TestBoundData {
78+
pub assumptions: Vec<WhereClause>,
79+
pub goals: Vec<WhereClause>,
6780
}
6881

6982
#[term(struct $id $binder)]

crates/formality-rust/src/prove.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ impl Crate {
326326
CrateItem::TraitImpl(_) => None,
327327
CrateItem::NegTraitImpl(_) => None,
328328
CrateItem::Fn(_) => None,
329+
CrateItem::Test(_) => None,
329330
})
330331
.collect()
331332
}

0 commit comments

Comments
 (0)