Skip to content

Commit c0fbd8b

Browse files
committed
Make is_int work with normalization
1 parent df0fe30 commit c0fbd8b

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

crates/formality-prove/src/prove/prove_wc.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use crate::{
1010
prove,
1111
prove_after::prove_after,
1212
prove_eq::prove_eq,
13+
prove_normalize::prove_normalize,
1314
prove_via::prove_via,
1415
prove_wf::prove_wf,
1516
},
@@ -149,9 +150,11 @@ judgment_fn! {
149150
)
150151

151152
(
152-
(is_int(decl, env, assumptions, ty) => c)
153+
(prove_normalize(&decl, &env, &assumptions, ty) => (c1, p))
154+
(let assumptions = c1.substitution().apply(&assumptions))
155+
(is_int(&decl, &env, assumptions, p) => c2)
153156
----------------------------- ("ty is int")
154-
(prove_wc(decl, env, assumptions, Relation::IsInt(ty)) => c)
157+
(prove_wc(decl, env, assumptions, Relation::IsInt(ty)) => c2)
155158
)
156159
}
157160
}

tests/projection.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,5 @@ fn test_ty_is_int() {
141141
TEST_TY_IS_INT,
142142
"{} => { @is_int(<u16 as Id>::This) }",
143143
)
144-
.assert_err(expect_test::expect![[r#"
145-
judgment `prove { goal: {@ is_int(<u16 as Id>::This)}, assumptions: {}, env: Env { variables: [], bias: Soundness, pending: [] }, decls: decls(222, [trait Id <ty> ], [impl <ty> Id(^ty0_0)], [], [alias <ty> <^ty0_0 as Id>::This = ^ty0_0], [], [], {Id}, {}) }` failed at the following rule(s):
146-
failed at (src/file.rs:LL:CC) because
147-
judgment `prove_wc_list { goal: {@ is_int(<u16 as Id>::This)}, assumptions: {}, env: Env { variables: [], bias: Soundness, pending: [] } }` failed at the following rule(s):
148-
the rule "some" failed at step #0 (src/file.rs:LL:CC) because
149-
judgment `prove_wc { goal: @ is_int(<u16 as Id>::This), assumptions: {}, env: Env { variables: [], bias: Soundness, pending: [] } }` failed at the following rule(s):
150-
the rule "ty is int" failed at step #0 (src/file.rs:LL:CC) because
151-
judgment had no applicable rules: `is_int { goal: <u16 as Id>::This, assumptions: {}, env: Env { variables: [], bias: Soundness, pending: [] } }`"#]]);
144+
.assert_ok(expect_test::expect!["{Constraints { env: Env { variables: [], bias: Soundness, pending: [] }, known_true: true, substitution: {} }}"]);
152145
}

0 commit comments

Comments
 (0)