mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-08 16:07:43 +00:00
Add tuple trait tests
This commit is contained in:
parent
d0e4c679ff
commit
109cc1de92
@ -43,19 +43,19 @@ LL | t.2;
|
|||||||
= note: see issue #38412 <https://github.com/rust-lang/rust/issues/38412> for more information
|
= 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
|
= 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
|
--> $DIR/explore-issue-38412.rs:36:7
|
||||||
|
|
|
|
||||||
LL | t.3;
|
LL | t.3;
|
||||||
| ^ private field
|
| ^ 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
|
--> $DIR/explore-issue-38412.rs:37:7
|
||||||
|
|
|
|
||||||
LL | t.4;
|
LL | t.4;
|
||||||
| ^ private field
|
| ^ 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
|
--> $DIR/explore-issue-38412.rs:38:7
|
||||||
|
|
|
|
||||||
LL | t.5;
|
LL | t.5;
|
||||||
|
19
src/test/ui/tuple/builtin-fail.rs
Normal file
19
src/test/ui/tuple/builtin-fail.rs
Normal file
@ -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
|
||||||
|
}
|
55
src/test/ui/tuple/builtin-fail.stderr
Normal file
55
src/test/ui/tuple/builtin-fail.stderr
Normal file
@ -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`.
|
20
src/test/ui/tuple/builtin.rs
Normal file
20
src/test/ui/tuple/builtin.rs
Normal file
@ -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,)>();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user