Positive coverage: prove_eq / alias
alias| Line | Coverage | Source |
|---|---|---|
| 55 | N/A | (let AliasTy { name: a_name, parameters: a_parameters } = a) |
| 56 | N/A | (let AliasTy { name: b_name, parameters: b_parameters } = b) |
| 57 | ✗ | (if a_name == b_name) |
| 58 | 1 | (prove(decls, env, assumptions, Wcs::all_eq(a_parameters, b_parameters)) => env_c) |
| ──────── ("alias") | ||
| 60 | 1 | (prove_eq(decls, env, assumptions, TyData::AliasTy(a), TyData::AliasTy(b)) => env_c) |
1 test exercised this rule:
Source location: tests/projection.rs:55
#[test]
fn normalize_basic() {
test_where_clause(
NORMALIZE_BASIC,
"forall<T> exists<U> {} => { <Vec<T> as Iterator>::Item = U }",
)
.assert_ok(expect_test::expect!["{Constraints { env: Env { variables: [!ty_1, ?ty_2], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {?ty_2 => <Vec<!ty_1> as Iterator>::Item} }, Constraints { env: Env { variables: [!ty_1, ?ty_2], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {?ty_2 => !ty_1} }}"]);
test_where_clause(
NORMALIZE_BASIC,
"forall<T> {} => { Iterator(Vec<T>), <Vec<T> as Iterator>::Item = T }",
)
.assert_ok(expect_test::expect!["{Constraints { env: Env { variables: [!ty_1], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {} }}"]);
test_where_clause(
NORMALIZE_BASIC,
"forall<T> { Iterator(T), <T as Iterator>::Item = Foo } => { <T as Iterator>::Item = Foo }",
).assert_ok(
expect_test::expect!["{Constraints { env: Env { variables: [!ty_1], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {} }}"]
);
test_where_clause(
NORMALIZE_BASIC,
"forall<T> exists<U> { Iterator(T) } => { <T as Iterator>::Item = U }",
)
.assert_ok(expect_test::expect!["{Constraints { env: Env { variables: [!ty_1, ?ty_2], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {?ty_2 => <!ty_1 as Iterator>::Item} }}"]);
test_where_clause(
NORMALIZE_BASIC,
"forall<T> { Iterator(T) } => { <T as Iterator>::Item = <T as Iterator>::Item }",
)
.assert_ok(expect_test::expect!["{Constraints { env: Env { variables: [!ty_1], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {} }}"]);
test_where_clause(
NORMALIZE_BASIC,
"forall<T> exists<U> { Iterator(T) } => { <T as Iterator>::Item = <U as Iterator>::Item }",
).assert_ok(
expect_test::expect!["{Constraints { env: Env { variables: [!ty_1, ?ty_2], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {?ty_2 => !ty_1} }, Constraints { env: Env { variables: [!ty_1, ?ty_3, ?ty_2], bias: Soundness, pending: [], allow_pending_outlives: false }, known_true: true, substitution: {?ty_2 => Vec<<!ty_1 as Iterator>::Item>, ?ty_3 => <!ty_1 as Iterator>::Item} }}"]);
}
Proof tree
prove_wc_list (some)prove_wc_list.rs:31prove_wc (eq)prove_wc.rs:128prove_eq (alias)prove_eq.rs:59prove_wc_list (some)prove_wc_list.rs:31prove_wc (eq)prove_wc.rs:128prove_eq (symmetric)prove_eq.rs:41prove_eq (existential)prove_eq.rs:65prove_existential_var_eq (existential-universal)prove_eq.rs:143
prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24
prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24
prove_wc_list (some)prove_wc_list.rs:31prove_wc (eq)prove_wc.rs:128prove_eq (symmetric)prove_eq.rs:41prove_eq (normalize-l)prove_eq.rs:72prove_normalize (normalize-via-impl)prove_normalize.rs:49prove_wc_list (some)prove_wc_list.rs:31prove_wc (eq)prove_wc.rs:128prove_eq (existential)prove_eq.rs:65prove_existential_var_eq (existential-nonvar)prove_eq.rs:98prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24
prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24
prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24
prove_after (prove_after)prove_after.rs:20prove_wc_list (some)prove_wc_list.rs:31prove_wc (eq)prove_wc.rs:128prove_eq (existential)prove_eq.rs:65prove_existential_var_eq (existential-nonvar)prove_eq.rs:98prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24
prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24
prove_after (prove_after)prove_after.rs:20prove_wc_list (none)prove_wc_list.rs:24