Add more tests
This commit is contained in:
parent
cb7264b22a
commit
f665ccd3a2
5 changed files with 73 additions and 1 deletions
|
@ -33,9 +33,19 @@ pub struct Struct2<T = usize> {
|
||||||
pub field: T,
|
pub field: T,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
||||||
|
pub struct Struct3<A = isize, #[unstable(feature = "unstable_default", issue = "none")] B = usize> {
|
||||||
|
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
||||||
|
pub field1: A,
|
||||||
|
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
||||||
|
pub field2: B,
|
||||||
|
}
|
||||||
|
|
||||||
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
||||||
pub const STRUCT1: Struct1 = Struct1 { field: 1 };
|
pub const STRUCT1: Struct1 = Struct1 { field: 1 };
|
||||||
|
|
||||||
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
||||||
pub const STRUCT2: Struct2 = Struct2 { field: 1 };
|
pub const STRUCT2: Struct2 = Struct2 { field: 1 };
|
||||||
|
|
||||||
|
#[stable(feature = "stable_test_feature", since = "1.0.0")]
|
||||||
|
pub const STRUCT3: Struct3 = Struct3 { field1: 1, field2: 2 };
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
// ignore-tidy-linelength
|
||||||
|
// aux-build:unstable_generic_param.rs
|
||||||
|
|
||||||
|
extern crate unstable_generic_param;
|
||||||
|
|
||||||
|
use unstable_generic_param::*;
|
||||||
|
|
||||||
|
impl<T> Trait3<usize> for T where T: Trait2<usize> { //~ ERROR use of unstable library feature 'unstable_default'
|
||||||
|
fn foo() -> usize { T::foo() }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
|
@ -0,0 +1,11 @@
|
||||||
|
error[E0658]: use of unstable library feature 'unstable_default'
|
||||||
|
--> $DIR/generics-default-stability-where.rs:8:45
|
||||||
|
|
|
||||||
|
LL | impl<T> Trait3<usize> for T where T: Trait2<usize> {
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
= help: add `#![feature(unstable_default)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0658`.
|
|
@ -61,4 +61,19 @@ fn main() {
|
||||||
let _: usize = STRUCT2.field; // ok
|
let _: usize = STRUCT2.field; // ok
|
||||||
let _ = STRUCT2.field + 1; // ok
|
let _ = STRUCT2.field + 1; // ok
|
||||||
let _ = STRUCT2.field + 1usize; // ok
|
let _ = STRUCT2.field + 1usize; // ok
|
||||||
|
|
||||||
|
let _ = STRUCT3;
|
||||||
|
let _: Struct3 = STRUCT3; // ok
|
||||||
|
let _: Struct3<isize, usize> = STRUCT3; //~ ERROR use of unstable library feature 'unstable_default'
|
||||||
|
let _: Struct3<isize> = STRUCT3; // ok
|
||||||
|
let _: Struct3<isize, isize> = Struct3 { field1: 0, field2: 0 }; //~ ERROR use of unstable library feature 'unstable_default'
|
||||||
|
let _: Struct3<usize, usize> = Struct3 { field1: 0, field2: 0 }; //~ ERROR use of unstable library feature 'unstable_default'
|
||||||
|
let _ = STRUCT3.field1; // ok
|
||||||
|
let _: isize = STRUCT3.field1; // ok
|
||||||
|
let _ = STRUCT3.field1 + 1; // ok
|
||||||
|
// Note the aforementioned leak.
|
||||||
|
let _: usize = STRUCT3.field2; // ok
|
||||||
|
let _: Struct3<usize> = Struct3 { field1: 0, field2: 0 }; // ok
|
||||||
|
let _ = STRUCT3.field2 + 1; // ok
|
||||||
|
let _ = STRUCT3.field2 + 1usize; // ok
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,30 @@ LL | let _: Struct1<isize> = Struct1 { field: 0 };
|
||||||
|
|
|
|
||||||
= help: add `#![feature(unstable_default)]` to the crate attributes to enable
|
= help: add `#![feature(unstable_default)]` to the crate attributes to enable
|
||||||
|
|
||||||
error: aborting due to 6 previous errors
|
error[E0658]: use of unstable library feature 'unstable_default'
|
||||||
|
--> $DIR/generics-default-stability.rs:67:27
|
||||||
|
|
|
||||||
|
LL | let _: Struct3<isize, usize> = STRUCT3;
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
= help: add `#![feature(unstable_default)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error[E0658]: use of unstable library feature 'unstable_default'
|
||||||
|
--> $DIR/generics-default-stability.rs:69:27
|
||||||
|
|
|
||||||
|
LL | let _: Struct3<isize, isize> = Struct3 { field1: 0, field2: 0 };
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
= help: add `#![feature(unstable_default)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error[E0658]: use of unstable library feature 'unstable_default'
|
||||||
|
--> $DIR/generics-default-stability.rs:70:27
|
||||||
|
|
|
||||||
|
LL | let _: Struct3<usize, usize> = Struct3 { field1: 0, field2: 0 };
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
= help: add `#![feature(unstable_default)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error: aborting due to 9 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0658`.
|
For more information about this error, try `rustc --explain E0658`.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue