about summary refs log tree commit diff
path: root/src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs')
-rw-r--r--src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs127
1 files changed, 0 insertions, 127 deletions
diff --git a/src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs b/src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs
deleted file mode 100644
index 1ec20c50034..00000000000
--- a/src/test/ui/rfcs/rfc-2302-self-struct-ctor.rs
+++ /dev/null
@@ -1,127 +0,0 @@
-// run-pass
-
-#![allow(dead_code)]
-
-use std::fmt::Display;
-
-struct ST1(i32, i32);
-
-impl ST1 {
-    fn new() -> Self {
-        ST1(0, 1)
-    }
-
-    fn ctor() -> Self {
-        Self(1,2)         // Self as a constructor
-    }
-
-    fn pattern(self) {
-        match self {
-            Self(x, y) => println!("{} {}", x, y), // Self as a pattern
-        }
-    }
-}
-
-struct ST2<T>(T); // With type parameter
-
-impl<T> ST2<T> where T: Display {
-
-    fn ctor(v: T) -> Self {
-        Self(v)
-    }
-
-    fn pattern(&self) {
-        match self {
-            Self(ref v) => println!("{}", v),
-        }
-    }
-}
-
-struct ST3<'a>(&'a i32); // With lifetime parameter
-
-impl<'a> ST3<'a> {
-
-    fn ctor(v: &'a i32) -> Self {
-        Self(v)
-    }
-
-    fn pattern(self) {
-        let Self(ref v) = self;
-        println!("{}", v);
-    }
-}
-
-struct ST4(usize);
-
-impl ST4 {
-    fn map(opt: Option<usize>) -> Option<Self> {
-        opt.map(Self)     // use `Self` as a function passed somewhere
-    }
-}
-
-struct ST5;               // unit struct
-
-impl ST5 {
-    fn ctor() -> Self {
-        Self               // `Self` as a unit struct value
-    }
-
-    fn pattern(self) -> Self {
-        match self {
-            Self => Self,   // `Self` as a unit struct value for matching
-        }
-    }
-}
-
-struct ST6(i32);
-type T = ST6;
-impl T {
-    fn ctor() -> Self {
-        ST6(1)
-    }
-
-    fn type_alias(self) {
-        let Self(_x) = match self { Self(x) => Self(x) };
-        let _opt: Option<Self> = Some(0).map(Self);
-    }
-}
-
-struct ST7<T1, T2>(T1, T2);
-
-impl ST7<i32, usize> {
-
-    fn ctor() -> Self {
-        Self(1, 2)
-    }
-
-    fn pattern(self) -> Self {
-        match self {
-            Self(x, y) => Self(x, y),
-        }
-    }
-}
-
-fn main() {
-    let v1 = ST1::ctor();
-    v1.pattern();
-
-    let v2 = ST2::ctor(10);
-    v2.pattern();
-
-    let local = 42;
-    let v3 = ST3::ctor(&local);
-    v3.pattern();
-
-    let v4 = Some(1usize);
-    let _ = ST4::map(v4);
-
-    let v5 = ST5::ctor();
-    v5.pattern();
-
-    let v6 = ST6::ctor();
-    v6.type_alias();
-
-    let v7 = ST7::<i32, usize>::ctor();
-    let r = v7.pattern();
-    println!("{} {}", r.0, r.1)
-}