about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorF001 <changchun.fan@qq.com>2018-08-28 12:51:43 +0800
committerF001 <changchun.fan@qq.com>2018-09-13 10:57:28 +0800
commita4891699125fa12d46217890e4eb68b35e9ff6d5 (patch)
treebe5ca3676bccdcaeeb465f862d0e0195bb3f0c11 /src/test/ui
parentf2302daef3608c09e2b50193a64611b18ced86f3 (diff)
downloadrust-a4891699125fa12d46217890e4eb68b35e9ff6d5.tar.gz
rust-a4891699125fa12d46217890e4eb68b35e9ff6d5.zip
implement feature tuple_struct_self_ctor
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.rs19
-rw-r--r--src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.stderr20
-rw-r--r--src/test/ui/resolve/tuple-struct-alias.rs9
-rw-r--r--src/test/ui/resolve/tuple-struct-alias.stderr22
4 files changed, 42 insertions, 28 deletions
diff --git a/src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.rs b/src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.rs
new file mode 100644
index 00000000000..aa907e813ed
--- /dev/null
+++ b/src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.rs
@@ -0,0 +1,19 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+struct ST(i32, i32);
+
+impl ST {
+    fn ctor() -> Self {
+        Self(1,2)
+        //~^ ERROR: expected function, found self type `Self` [E0423]
+        //~^^ ERROR: tuple struct Self constructors are unstable (see issue #51994) [E0658]
+    }
+}
diff --git a/src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.stderr b/src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.stderr
new file mode 100644
index 00000000000..e92924e9602
--- /dev/null
+++ b/src/test/ui/feature-gates/feature-gate-tuple-struct-self-ctor.stderr
@@ -0,0 +1,20 @@
+error[E0423]: expected function, found self type `Self`
+  --> $DIR/feature-gate-tuple-struct-self-ctor.rs:15:9
+   |
+LL |         Self(1,2)
+   |         ^^^^ not a function
+   |
+   = note: can't use `Self` as a constructor, you must use the implemented struct
+
+error[E0658]: tuple struct Self constructors are unstable (see issue #51994)
+  --> $DIR/feature-gate-tuple-struct-self-ctor.rs:15:9
+   |
+LL |         Self(1,2)
+   |         ^^^^^^^^^
+   |
+   = help: add #![feature(tuple_struct_self_ctor)] to the crate attributes to enable
+
+error: aborting due to 2 previous errors
+
+Some errors occurred: E0423, E0658.
+For more information about an error, try `rustc --explain E0423`.
diff --git a/src/test/ui/resolve/tuple-struct-alias.rs b/src/test/ui/resolve/tuple-struct-alias.rs
index 0dbca07b771..1f3588dd3ca 100644
--- a/src/test/ui/resolve/tuple-struct-alias.rs
+++ b/src/test/ui/resolve/tuple-struct-alias.rs
@@ -11,15 +11,6 @@
 struct S(u8, u16);
 type A = S;
 
-impl S {
-    fn f() {
-        let s = Self(0, 1); //~ ERROR expected function
-        match s {
-            Self(..) => {} //~ ERROR expected tuple struct/variant
-        }
-    }
-}
-
 fn main() {
     let s = A(0, 1); //~ ERROR expected function
     match s {
diff --git a/src/test/ui/resolve/tuple-struct-alias.stderr b/src/test/ui/resolve/tuple-struct-alias.stderr
index cdac6277bcf..ad2ae4acb8b 100644
--- a/src/test/ui/resolve/tuple-struct-alias.stderr
+++ b/src/test/ui/resolve/tuple-struct-alias.stderr
@@ -1,21 +1,5 @@
-error[E0423]: expected function, found self type `Self`
-  --> $DIR/tuple-struct-alias.rs:16:17
-   |
-LL |         let s = Self(0, 1); //~ ERROR expected function
-   |                 ^^^^ not a function
-   |
-   = note: can't use `Self` as a constructor, you must use the implemented struct
-
-error[E0532]: expected tuple struct/variant, found self type `Self`
-  --> $DIR/tuple-struct-alias.rs:18:13
-   |
-LL |             Self(..) => {} //~ ERROR expected tuple struct/variant
-   |             ^^^^ not a tuple struct/variant
-   |
-   = note: can't use `Self` as a constructor, you must use the implemented struct
-
 error[E0423]: expected function, found type alias `A`
-  --> $DIR/tuple-struct-alias.rs:24:13
+  --> $DIR/tuple-struct-alias.rs:15:13
    |
 LL |     let s = A(0, 1); //~ ERROR expected function
    |             ^ did you mean `S`?
@@ -23,14 +7,14 @@ LL |     let s = A(0, 1); //~ ERROR expected function
    = note: can't use a type alias as a constructor
 
 error[E0532]: expected tuple struct/variant, found type alias `A`
-  --> $DIR/tuple-struct-alias.rs:26:9
+  --> $DIR/tuple-struct-alias.rs:17:9
    |
 LL |         A(..) => {} //~ ERROR expected tuple struct/variant
    |         ^ did you mean `S`?
    |
    = note: can't use a type alias as a constructor
 
-error: aborting due to 4 previous errors
+error: aborting due to 2 previous errors
 
 Some errors occurred: E0423, E0532.
 For more information about an error, try `rustc --explain E0423`.