diff options
| author | Michael Goulet <michael@errs.io> | 2022-08-07 16:52:46 -0700 | 
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-08-07 16:54:03 -0700 | 
| commit | 109cc1de9201e0523a24de1ad543f9baa23b57dc (patch) | |
| tree | 1357c0fc701362f8168142d38df1996ab1a1e1a8 | |
| parent | d0e4c679ff1772e7ec0f9ca983ac229ffd3db2dc (diff) | |
| download | rust-109cc1de9201e0523a24de1ad543f9baa23b57dc.tar.gz rust-109cc1de9201e0523a24de1ad543f9baa23b57dc.zip | |
Add tuple trait tests
| -rw-r--r-- | src/test/ui/explore-issue-38412.stderr | 6 | ||||
| -rw-r--r-- | src/test/ui/tuple/builtin-fail.rs | 19 | ||||
| -rw-r--r-- | src/test/ui/tuple/builtin-fail.stderr | 55 | ||||
| -rw-r--r-- | src/test/ui/tuple/builtin.rs | 20 | 
4 files changed, 97 insertions, 3 deletions
| diff --git a/src/test/ui/explore-issue-38412.stderr b/src/test/ui/explore-issue-38412.stderr index e3f82137ab3..08dadb4db85 100644 --- a/src/test/ui/explore-issue-38412.stderr +++ b/src/test/ui/explore-issue-38412.stderr @@ -43,19 +43,19 @@ LL | t.2; = note: see issue #38412 <https://github.com/rust-lang/rust/issues/38412> for more information = help: add `#![feature(unstable_undeclared)]` to the crate attributes to enable -error[E0616]: field `3` of struct `Tuple` is private +error[E0616]: field `3` of struct `pub_and_stability::Tuple` is private --> $DIR/explore-issue-38412.rs:36:7 | LL | t.3; | ^ private field -error[E0616]: field `4` of struct `Tuple` is private +error[E0616]: field `4` of struct `pub_and_stability::Tuple` is private --> $DIR/explore-issue-38412.rs:37:7 | LL | t.4; | ^ private field -error[E0616]: field `5` of struct `Tuple` is private +error[E0616]: field `5` of struct `pub_and_stability::Tuple` is private --> $DIR/explore-issue-38412.rs:38:7 | LL | t.5; diff --git a/src/test/ui/tuple/builtin-fail.rs b/src/test/ui/tuple/builtin-fail.rs new file mode 100644 index 00000000000..31208096151 --- /dev/null +++ b/src/test/ui/tuple/builtin-fail.rs @@ -0,0 +1,19 @@ +#![feature(tuple_trait)] + +fn assert_is_tuple<T: std::marker::Tuple + ?Sized>() {} + +struct TupleStruct(i32, i32); + +fn from_param_env<T>() { + assert_is_tuple::<T>(); + //~^ ERROR `T` is not a tuple +} + +fn main() { + assert_is_tuple::<i32>(); + //~^ ERROR `i32` is not a tuple + assert_is_tuple::<(i32)>(); + //~^ ERROR `i32` is not a tuple + assert_is_tuple::<TupleStruct>(); + //~^ ERROR `TupleStruct` is not a tuple +} diff --git a/src/test/ui/tuple/builtin-fail.stderr b/src/test/ui/tuple/builtin-fail.stderr new file mode 100644 index 00000000000..e3e29a73fdc --- /dev/null +++ b/src/test/ui/tuple/builtin-fail.stderr @@ -0,0 +1,55 @@ +error[E0277]: `T` is not a tuple + --> $DIR/builtin-fail.rs:8:23 + | +LL | assert_is_tuple::<T>(); + | ^ the trait `Tuple` is not implemented for `T` + | +note: required by a bound in `assert_is_tuple` + --> $DIR/builtin-fail.rs:3:23 + | +LL | fn assert_is_tuple<T: std::marker::Tuple + ?Sized>() {} + | ^^^^^^^^^^^^^^^^^^ required by this bound in `assert_is_tuple` +help: consider restricting type parameter `T` + | +LL | fn from_param_env<T: std::marker::Tuple>() { + | ++++++++++++++++++++ + +error[E0277]: `i32` is not a tuple + --> $DIR/builtin-fail.rs:13:23 + | +LL | assert_is_tuple::<i32>(); + | ^^^ the trait `Tuple` is not implemented for `i32` + | +note: required by a bound in `assert_is_tuple` + --> $DIR/builtin-fail.rs:3:23 + | +LL | fn assert_is_tuple<T: std::marker::Tuple + ?Sized>() {} + | ^^^^^^^^^^^^^^^^^^ required by this bound in `assert_is_tuple` + +error[E0277]: `i32` is not a tuple + --> $DIR/builtin-fail.rs:15:24 + | +LL | assert_is_tuple::<(i32)>(); + | ^^^ the trait `Tuple` is not implemented for `i32` + | +note: required by a bound in `assert_is_tuple` + --> $DIR/builtin-fail.rs:3:23 + | +LL | fn assert_is_tuple<T: std::marker::Tuple + ?Sized>() {} + | ^^^^^^^^^^^^^^^^^^ required by this bound in `assert_is_tuple` + +error[E0277]: `TupleStruct` is not a tuple + --> $DIR/builtin-fail.rs:17:23 + | +LL | assert_is_tuple::<TupleStruct>(); + | ^^^^^^^^^^^ the trait `Tuple` is not implemented for `TupleStruct` + | +note: required by a bound in `assert_is_tuple` + --> $DIR/builtin-fail.rs:3:23 + | +LL | fn assert_is_tuple<T: std::marker::Tuple + ?Sized>() {} + | ^^^^^^^^^^^^^^^^^^ required by this bound in `assert_is_tuple` + +error: aborting due to 4 previous errors + +For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/tuple/builtin.rs b/src/test/ui/tuple/builtin.rs new file mode 100644 index 00000000000..d87ce526357 --- /dev/null +++ b/src/test/ui/tuple/builtin.rs @@ -0,0 +1,20 @@ +// check-pass + +#![feature(tuple_trait)] + +fn assert_is_tuple<T: std::marker::Tuple + ?Sized>() {} + +struct Unsized([u8]); + +fn from_param_env<T: std::marker::Tuple + ?Sized>() { + assert_is_tuple::<T>(); +} + +fn main() { + assert_is_tuple::<()>(); + assert_is_tuple::<(i32,)>(); + assert_is_tuple::<(Unsized,)>(); + from_param_env::<()>(); + from_param_env::<(i32,)>(); + from_param_env::<(Unsized,)>(); +} | 
