summaryrefslogtreecommitdiffstats
path: root/src/test/ui/self/self-impl-2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/self/self-impl-2.rs')
-rw-r--r--src/test/ui/self/self-impl-2.rs68
1 files changed, 0 insertions, 68 deletions
diff --git a/src/test/ui/self/self-impl-2.rs b/src/test/ui/self/self-impl-2.rs
deleted file mode 100644
index 7eed3f056..000000000
--- a/src/test/ui/self/self-impl-2.rs
+++ /dev/null
@@ -1,68 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-#![allow(unused_variables)]
-// Test that we can use `Self` types in impls in the expected way.
-
-// pretty-expanded FIXME #23616
-
-struct Foo;
-
-// Test uses on inherent impl.
-impl Foo {
- fn foo(_x: Self, _y: &Self, _z: Box<Self>) -> Self {
- Foo
- }
-
- fn baz() {
- // Test that Self cannot be shadowed.
- type Foo = i32;
- // There is no empty method on i32.
- Self::empty();
-
- let _: Self = Foo;
- }
-
- fn empty() {}
-}
-
-// Test uses when implementing a trait and with a type parameter.
-pub struct Baz<X> {
- pub f: X,
-}
-
-trait SuperBar {
- type SuperQux;
-}
-
-trait Bar<X>: SuperBar {
- type Qux;
-
- fn bar(x: Self, y: &Self, z: Box<Self>, _: Self::SuperQux) -> Self;
- fn dummy(&self, x: X) { }
-}
-
-impl SuperBar for Box<Baz<isize>> {
- type SuperQux = bool;
-}
-
-impl Bar<isize> for Box<Baz<isize>> {
- type Qux = i32;
-
- fn bar(_x: Self, _y: &Self, _z: Box<Self>, _: Self::SuperQux) -> Self {
- let _: Self::Qux = 42;
- let _: <Self as Bar<isize>>::Qux = 42;
-
- let _: Self::SuperQux = true;
- let _: <Self as SuperBar>::SuperQux = true;
-
- Box::new(Baz { f: 42 })
- }
-}
-
-fn main() {
- let _: Foo = Foo::foo(Foo, &Foo, Box::new(Foo));
- let _: Box<Baz<isize>> = Bar::bar(Box::new(Baz { f: 42 }),
- &Box::new(Baz { f: 42 }),
- Box::new(Box::new(Baz { f: 42 })),
- true);
-}