summaryrefslogtreecommitdiffstats
path: root/tests/ui/traits/new-solver/alias-bound-preference.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/traits/new-solver/alias-bound-preference.rs')
-rw-r--r--tests/ui/traits/new-solver/alias-bound-preference.rs39
1 files changed, 0 insertions, 39 deletions
diff --git a/tests/ui/traits/new-solver/alias-bound-preference.rs b/tests/ui/traits/new-solver/alias-bound-preference.rs
deleted file mode 100644
index e4e0f634e..000000000
--- a/tests/ui/traits/new-solver/alias-bound-preference.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-// revisions: old next
-//[next] compile-flags: -Ztrait-solver=next
-// run-pass
-
-// A test for https://github.com/rust-lang/trait-system-refactor-initiative/issues/45.
-
-trait Trait {
- type Assoc: Into<u32>;
-}
-impl<T: Into<u32>> Trait for T {
- type Assoc = T;
-}
-fn prefer_alias_bound_projection<T: Trait>(x: T::Assoc) {
- // There are two possible types for `x`:
- // - `u32` by using the "alias bound" of `<T as Trait>::Assoc`
- // - `<T as Trait>::Assoc`, i.e. `u16`, by using `impl<T> From<T> for T`
- //
- // We infer the type of `x` to be `u32` here as it is highly likely
- // that this is expected by the user.
- let x = x.into();
- assert_eq!(std::mem::size_of_val(&x), 4);
-}
-
-fn impl_trait() -> impl Into<u32> {
- 0u16
-}
-
-fn main() {
- // There are two possible types for `x`:
- // - `u32` by using the "alias bound" of `impl Into<u32>`
- // - `impl Into<u32>`, i.e. `u16`, by using `impl<T> From<T> for T`
- //
- // We infer the type of `x` to be `u32` here as it is highly likely
- // that this is expected by the user.
- let x = impl_trait().into();
- assert_eq!(std::mem::size_of_val(&x), 4);
-
- prefer_alias_bound_projection::<u16>(1);
-}