about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorJacob Hughes <j@jacobhughes.me>2020-09-23 02:14:42 -0400
committerJacob Hughes <j@jacobhughes.me>2020-09-23 02:14:42 -0400
commit98eab09cf4ee1a35290a2061ee0e7a19703923a8 (patch)
tree8570e75f390a84c734316ac3609294c5a4828246 /src/test
parent3f1b4b39e3dbff49d3298af1acaa526310b255a7 (diff)
downloadrust-98eab09cf4ee1a35290a2061ee0e7a19703923a8.tar.gz
rust-98eab09cf4ee1a35290a2061ee0e7a19703923a8.zip
Add enum and type alias tests for generic default stability
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs106
-rw-r--r--src/test/ui/stability-attribute/generics-default-stability.rs144
-rw-r--r--src/test/ui/stability-attribute/generics-default-stability.stderr292
3 files changed, 540 insertions, 2 deletions
diff --git a/src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs b/src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs
index b5490381a46..231ab966558 100644
--- a/src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs
+++ b/src/test/ui/stability-attribute/auxiliary/unstable_generic_param.rs
@@ -76,6 +76,112 @@ pub const STRUCT4: Struct4 = Struct4 { field: 1 };
 pub const STRUCT5: Struct5 = Struct5 { field: 1 };
 
 #[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub enum Enum1<#[unstable(feature = "unstable_default", issue = "none")] T = usize> {
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    None,
+}
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub enum Enum2<T = usize> {
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    None,
+}
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub enum Enum3<T = isize, #[unstable(feature = "unstable_default", issue = "none")] E = usize> {
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    Ok(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    Err(#[stable(feature = "stable_test_feature", since = "1.0.0")] E),
+}
+
+#[rustc_deprecated(since = "1.1.0", reason = "test")]
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub enum Enum4<T = usize> {
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    None,
+}
+
+#[rustc_deprecated(since = "1.1.0", reason = "test")]
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub enum Enum5<#[unstable(feature = "unstable_default", issue = "none")] T = usize> {
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    None,
+}
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub enum Enum6<#[unstable(feature = "unstable_default6", issue = "none")] T = usize> {
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    Some(#[stable(feature = "stable_test_feature", since = "1.0.0")] T),
+    #[stable(feature = "stable_test_feature", since = "1.0.0")]
+    None,
+}
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ENUM1: Enum1 = Enum1::Some(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ENUM2: Enum2 = Enum2::Some(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ENUM3: Enum3 = Enum3::Ok(1);
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ENUM3B: Enum3 = Enum3::Err(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ENUM4: Enum4 = Enum4::Some(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ENUM5: Enum5 = Enum5::Some(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub type Alias1<#[unstable(feature = "unstable_default", issue = "none")] T = usize> = Option<T>;
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub type Alias2<T = usize> = Option<T>;
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub type Alias3<T = isize, #[unstable(feature = "unstable_default", issue = "none")] E = usize> =
+    Result<T, E>;
+
+#[rustc_deprecated(since = "1.1.0", reason = "test")]
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub type Alias4<T = usize> = Option<T>;
+
+#[rustc_deprecated(since = "1.1.0", reason = "test")]
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub type Alias5<#[unstable(feature = "unstable_default", issue = "none")] T = usize> = Option<T>;
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub type Alias6<#[unstable(feature = "unstable_default6", issue = "none")] T = usize> = Option<T>;
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ALIAS1: Alias1 = Alias1::Some(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ALIAS2: Alias2 = Alias2::Some(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ALIAS3: Alias3 = Alias3::Ok(1);
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ALIAS3B: Alias3 = Alias3::Err(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ALIAS4: Alias4 = Alias4::Some(1);
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
+pub const ALIAS5: Alias5 = Alias5::Some(1);
+
+
+#[stable(feature = "stable_test_feature", since = "1.0.0")]
 pub trait Alloc {}
 
 #[stable(feature = "stable_test_feature", since = "1.0.0")]
diff --git a/src/test/ui/stability-attribute/generics-default-stability.rs b/src/test/ui/stability-attribute/generics-default-stability.rs
index 461b1d405cb..d6f28e3e447 100644
--- a/src/test/ui/stability-attribute/generics-default-stability.rs
+++ b/src/test/ui/stability-attribute/generics-default-stability.rs
@@ -110,6 +110,150 @@ fn main() {
     let _: Struct6<isize> = Struct6 { field: 1 }; // ok
     let _: Struct6<isize> = Struct6 { field: 0 }; // ok
 
+    let _: Alias1<isize> = Alias1::Some(1); //~ ERROR use of unstable library feature 'unstable_default'
+
+    let _ = ALIAS1; // ok
+    let _: Alias1 = ALIAS1; // ok
+    let _: Alias1<usize> = ALIAS1; //~ ERROR use of unstable library feature 'unstable_default'
+    let _: Alias1<isize> = Alias1::Some(0); //~ ERROR use of unstable library feature 'unstable_default'
+
+    // Instability is not enforced for generic type parameters used in public fields.
+    // Note how the unstable type default `usize` leaks,
+    // and can be used without the 'unstable_default' feature.
+    let _ = Alias1::Some(1);
+    let _ = Alias1::Some(());
+    let _ = Alias1::Some(1isize);
+    let _: Alias1 = Alias1::Some(1);
+    let _: usize = ALIAS1.unwrap();
+    let _ = ALIAS1.unwrap() + 1;
+    let _ = ALIAS1.unwrap() + 1usize;
+
+    let _ = Alias2::Some(1); // ok
+    let _: Alias2 = Alias2::Some(1); // ok
+    let _: Alias2<usize> = Alias2::Some(1); // ok
+
+    let _ = ALIAS2;
+    let _: Alias2 = ALIAS2; // ok
+    let _: Alias2<usize> = ALIAS2; // ok
+    let _: Alias2<isize> = Alias2::Some(0); // ok
+    let _ = ALIAS2.unwrap(); // ok
+    let _: usize = ALIAS2.unwrap(); // ok
+    let _ = ALIAS2.unwrap() + 1; // ok
+    let _ = ALIAS2.unwrap() + 1usize; // ok
+
+    let _ = ALIAS3;
+    let _: Alias3 = ALIAS3; // ok
+    let _: Alias3<isize, usize> = ALIAS3; //~ ERROR use of unstable library feature 'unstable_default'
+    let _: Alias3<isize> = ALIAS3; // ok
+    let _: Alias3<isize, isize> = Alias3::Ok(0); //~ ERROR use of unstable library feature 'unstable_default'
+    let _: Alias3<usize, usize> = Alias3::Ok(0); //~ ERROR use of unstable library feature 'unstable_default'
+    let _ = ALIAS3.unwrap(); // ok
+    let _: isize = ALIAS3.unwrap(); // ok
+    let _ = ALIAS3.unwrap() + 1; // ok
+    // Note the aforementioned leak.
+    let _: usize = ALIAS3B.unwrap_err(); // ok
+    let _: Alias3<usize> = Alias3::Err(0); // ok
+    let _ = ALIAS3B.unwrap_err() + 1; // ok
+    let _ = ALIAS3B.unwrap_err() + 1usize; // ok
+
+    let _ = ALIAS4;
+    let _: Alias4<isize> = Alias4::Some(1);
+    //~^ use of deprecated type alias `unstable_generic_param::Alias4`: test [deprecated]
+    //~^^ use of deprecated type alias `unstable_generic_param::Alias4`: test [deprecated]
+    let _ = ALIAS4;
+    let _: Alias4 = ALIAS4; //~ use of deprecated type alias `unstable_generic_param::Alias4`: test [deprecated]
+    let _: Alias4<usize> = ALIAS4; //~ use of deprecated type alias `unstable_generic_param::Alias4`: test [deprecated]
+    let _: Alias4<isize> = Alias4::Some(0);
+    //~^ use of deprecated type alias `unstable_generic_param::Alias4`: test [deprecated]
+    //~^^ use of deprecated type alias `unstable_generic_param::Alias4`: test [deprecated]
+
+    let _ = ALIAS5;
+    let _: Alias5<isize> = Alias5::Some(1); //~ ERROR use of unstable library feature 'unstable_default'
+    //~^ use of deprecated type alias `unstable_generic_param::Alias5`: test [deprecated]
+    //~^^ use of deprecated type alias `unstable_generic_param::Alias5`: test [deprecated]
+    let _ = ALIAS5;
+    let _: Alias5 = ALIAS5; //~ use of deprecated type alias `unstable_generic_param::Alias5`: test [deprecated]
+    let _: Alias5<usize> = ALIAS5; //~ ERROR use of unstable library feature 'unstable_default'
+    //~^ use of deprecated type alias `unstable_generic_param::Alias5`: test [deprecated]
+    let _: Alias5<isize> = Alias5::Some(0); //~ ERROR use of unstable library feature 'unstable_default'
+    //~^ use of deprecated type alias `unstable_generic_param::Alias5`: test [deprecated]
+    //~^^ use of deprecated type alias `unstable_generic_param::Alias5`: test [deprecated]
+
+    let _: Alias6<isize> = Alias6::Some(1); // ok
+    let _: Alias6<isize> = Alias6::Some(0); // ok
+
+    let _: Enum1<isize> = Enum1::Some(1); //~ ERROR use of unstable library feature 'unstable_default'
+
+    let _ = ENUM1; // ok
+    let _: Enum1 = ENUM1; // ok
+    let _: Enum1<usize> = ENUM1; //~ ERROR use of unstable library feature 'unstable_default'
+    let _: Enum1<isize> = Enum1::Some(0); //~ ERROR use of unstable library feature 'unstable_default'
+
+    // Instability is not enforced for generic type parameters used in public fields.
+    // Note how the unstable type default `usize` leaks,
+    // and can be used without the 'unstable_default' feature.
+    let _ = Enum1::Some(1);
+    let _ = Enum1::Some(());
+    let _ = Enum1::Some(1isize);
+    let _: Enum1 = Enum1::Some(1);
+    if let Enum1::Some(x) = ENUM1 {let _: usize = x;}
+    if let Enum1::Some(x) = ENUM1 {let _ = x + 1;}
+    if let Enum1::Some(x) = ENUM1 {let _ = x + 1usize;}
+
+    let _ = Enum2::Some(1); // ok
+    let _: Enum2 = Enum2::Some(1); // ok
+    let _: Enum2<usize> = Enum2::Some(1); // ok
+
+    let _ = ENUM2;
+    let _: Enum2 = ENUM2; // ok
+    let _: Enum2<usize> = ENUM2; // ok
+    let _: Enum2<isize> = Enum2::Some(0); // ok
+    if let Enum2::Some(x) = ENUM2 {let _ = x;} // ok
+    if let Enum2::Some(x) = ENUM2 {let _: usize = x;} // ok
+    if let Enum2::Some(x) = ENUM2 {let _ = x + 1;} // ok
+    if let Enum2::Some(x) = ENUM2 {let _ = x + 1usize;} // ok
+
+    let _ = ENUM3;
+    let _: Enum3 = ENUM3; // ok
+    let _: Enum3<isize, usize> = ENUM3; //~ ERROR use of unstable library feature 'unstable_default'
+    let _: Enum3<isize> = ENUM3; // ok
+    let _: Enum3<isize, isize> = Enum3::Ok(0); //~ ERROR use of unstable library feature 'unstable_default'
+    let _: Enum3<usize, usize> = Enum3::Ok(0); //~ ERROR use of unstable library feature 'unstable_default'
+    if let Enum3::Ok(x) = ENUM3 {let _ = x;} // ok
+    if let Enum3::Ok(x) = ENUM3 {let _: isize = x;} // ok
+    if let Enum3::Ok(x) = ENUM3 {let _ = x + 1;} // ok
+    // Note the aforementioned leak.
+    if let Enum3::Err(x) = ENUM3B {let _: usize = x;} // ok
+    let _: Enum3<usize> = Enum3::Err(0); // ok
+    if let Enum3::Err(x) = ENUM3B {let _ = x + 1;} // ok
+    if let Enum3::Err(x) = ENUM3B {let _ = x + 1usize;} // ok
+
+    let _ = ENUM4;
+    let _: Enum4<isize> = Enum4::Some(1);
+    //~^ use of deprecated variant `unstable_generic_param::Enum4::Some`: test [deprecated]
+    //~^^ use of deprecated enum `unstable_generic_param::Enum4`: test [deprecated]
+    let _ = ENUM4;
+    let _: Enum4 = ENUM4; //~ use of deprecated enum `unstable_generic_param::Enum4`: test [deprecated]
+    let _: Enum4<usize> = ENUM4; //~ use of deprecated enum `unstable_generic_param::Enum4`: test [deprecated]
+    let _: Enum4<isize> = Enum4::Some(0);
+    //~^ use of deprecated variant `unstable_generic_param::Enum4::Some`: test [deprecated]
+    //~^^ use of deprecated enum `unstable_generic_param::Enum4`: test [deprecated]
+
+    let _ = ENUM5;
+    let _: Enum5<isize> = Enum5::Some(1); //~ ERROR use of unstable library feature 'unstable_default'
+    //~^ use of deprecated variant `unstable_generic_param::Enum5::Some`: test [deprecated]
+    //~^^ use of deprecated enum `unstable_generic_param::Enum5`: test [deprecated]
+    let _ = ENUM5;
+    let _: Enum5 = ENUM5; //~ use of deprecated enum `unstable_generic_param::Enum5`: test [deprecated]
+    let _: Enum5<usize> = ENUM5; //~ ERROR use of unstable library feature 'unstable_default'
+    //~^ use of deprecated enum `unstable_generic_param::Enum5`: test [deprecated]
+    let _: Enum5<isize> = Enum5::Some(0); //~ ERROR use of unstable library feature 'unstable_default'
+    //~^ use of deprecated variant `unstable_generic_param::Enum5::Some`: test [deprecated]
+    //~^^ use of deprecated enum `unstable_generic_param::Enum5`: test [deprecated]
+
+    let _: Enum6<isize> = Enum6::Some(1); // ok
+    let _: Enum6<isize> = Enum6::Some(0); // ok
+
     let _: Box1<isize, System> = Box1::new(1); //~ ERROR use of unstable library feature 'box_alloc_param'
     let _: Box1<isize> = Box1::new(1); // ok
 
diff --git a/src/test/ui/stability-attribute/generics-default-stability.stderr b/src/test/ui/stability-attribute/generics-default-stability.stderr
index d9b238f8841..a5df70bb8b3 100644
--- a/src/test/ui/stability-attribute/generics-default-stability.stderr
+++ b/src/test/ui/stability-attribute/generics-default-stability.stderr
@@ -96,6 +96,150 @@ warning: use of deprecated struct `unstable_generic_param::Struct5`: test
 LL |     let _: Struct5<isize> = Struct5 { field: 0 };
    |            ^^^^^^^^^^^^^^
 
+warning: use of deprecated type alias `unstable_generic_param::Alias4`: test
+  --> $DIR/generics-default-stability.rs:160:28
+   |
+LL |     let _: Alias4<isize> = Alias4::Some(1);
+   |                            ^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias4`: test
+  --> $DIR/generics-default-stability.rs:160:12
+   |
+LL |     let _: Alias4<isize> = Alias4::Some(1);
+   |            ^^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias4`: test
+  --> $DIR/generics-default-stability.rs:164:12
+   |
+LL |     let _: Alias4 = ALIAS4;
+   |            ^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias4`: test
+  --> $DIR/generics-default-stability.rs:165:12
+   |
+LL |     let _: Alias4<usize> = ALIAS4;
+   |            ^^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias4`: test
+  --> $DIR/generics-default-stability.rs:166:28
+   |
+LL |     let _: Alias4<isize> = Alias4::Some(0);
+   |                            ^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias4`: test
+  --> $DIR/generics-default-stability.rs:166:12
+   |
+LL |     let _: Alias4<isize> = Alias4::Some(0);
+   |            ^^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias5`: test
+  --> $DIR/generics-default-stability.rs:171:28
+   |
+LL |     let _: Alias5<isize> = Alias5::Some(1);
+   |                            ^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias5`: test
+  --> $DIR/generics-default-stability.rs:171:12
+   |
+LL |     let _: Alias5<isize> = Alias5::Some(1);
+   |            ^^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias5`: test
+  --> $DIR/generics-default-stability.rs:175:12
+   |
+LL |     let _: Alias5 = ALIAS5;
+   |            ^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias5`: test
+  --> $DIR/generics-default-stability.rs:176:12
+   |
+LL |     let _: Alias5<usize> = ALIAS5;
+   |            ^^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias5`: test
+  --> $DIR/generics-default-stability.rs:178:28
+   |
+LL |     let _: Alias5<isize> = Alias5::Some(0);
+   |                            ^^^^^^^^^^^^
+
+warning: use of deprecated type alias `unstable_generic_param::Alias5`: test
+  --> $DIR/generics-default-stability.rs:178:12
+   |
+LL |     let _: Alias5<isize> = Alias5::Some(0);
+   |            ^^^^^^^^^^^^^
+
+warning: use of deprecated variant `unstable_generic_param::Enum4::Some`: test
+  --> $DIR/generics-default-stability.rs:232:27
+   |
+LL |     let _: Enum4<isize> = Enum4::Some(1);
+   |                           ^^^^^^^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum4`: test
+  --> $DIR/generics-default-stability.rs:232:12
+   |
+LL |     let _: Enum4<isize> = Enum4::Some(1);
+   |            ^^^^^^^^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum4`: test
+  --> $DIR/generics-default-stability.rs:236:12
+   |
+LL |     let _: Enum4 = ENUM4;
+   |            ^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum4`: test
+  --> $DIR/generics-default-stability.rs:237:12
+   |
+LL |     let _: Enum4<usize> = ENUM4;
+   |            ^^^^^^^^^^^^
+
+warning: use of deprecated variant `unstable_generic_param::Enum4::Some`: test
+  --> $DIR/generics-default-stability.rs:238:27
+   |
+LL |     let _: Enum4<isize> = Enum4::Some(0);
+   |                           ^^^^^^^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum4`: test
+  --> $DIR/generics-default-stability.rs:238:12
+   |
+LL |     let _: Enum4<isize> = Enum4::Some(0);
+   |            ^^^^^^^^^^^^
+
+warning: use of deprecated variant `unstable_generic_param::Enum5::Some`: test
+  --> $DIR/generics-default-stability.rs:243:27
+   |
+LL |     let _: Enum5<isize> = Enum5::Some(1);
+   |                           ^^^^^^^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum5`: test
+  --> $DIR/generics-default-stability.rs:243:12
+   |
+LL |     let _: Enum5<isize> = Enum5::Some(1);
+   |            ^^^^^^^^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum5`: test
+  --> $DIR/generics-default-stability.rs:247:12
+   |
+LL |     let _: Enum5 = ENUM5;
+   |            ^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum5`: test
+  --> $DIR/generics-default-stability.rs:248:12
+   |
+LL |     let _: Enum5<usize> = ENUM5;
+   |            ^^^^^^^^^^^^
+
+warning: use of deprecated variant `unstable_generic_param::Enum5::Some`: test
+  --> $DIR/generics-default-stability.rs:250:27
+   |
+LL |     let _: Enum5<isize> = Enum5::Some(0);
+   |                           ^^^^^^^^^^^
+
+warning: use of deprecated enum `unstable_generic_param::Enum5`: test
+  --> $DIR/generics-default-stability.rs:250:12
+   |
+LL |     let _: Enum5<isize> = Enum5::Some(0);
+   |            ^^^^^^^^^^^^
+
 error[E0658]: use of unstable library feature 'unstable_default'
   --> $DIR/generics-default-stability.rs:36:20
    |
@@ -168,8 +312,152 @@ LL |     let _: Struct5<isize> = Struct5 { field: 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:113:19
+   |
+LL |     let _: Alias1<isize> = Alias1::Some(1);
+   |                   ^^^^^
+   |
+   = 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:117:19
+   |
+LL |     let _: Alias1<usize> = ALIAS1;
+   |                   ^^^^^
+   |
+   = 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:118:19
+   |
+LL |     let _: Alias1<isize> = Alias1::Some(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:146:26
+   |
+LL |     let _: Alias3<isize, usize> = ALIAS3;
+   |                          ^^^^^
+   |
+   = 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:148:26
+   |
+LL |     let _: Alias3<isize, isize> = Alias3::Ok(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:149:26
+   |
+LL |     let _: Alias3<usize, usize> = Alias3::Ok(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:171:19
+   |
+LL |     let _: Alias5<isize> = Alias5::Some(1);
+   |                   ^^^^^
+   |
+   = 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:176:19
+   |
+LL |     let _: Alias5<usize> = ALIAS5;
+   |                   ^^^^^
+   |
+   = 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:178:19
+   |
+LL |     let _: Alias5<isize> = Alias5::Some(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:185:18
+   |
+LL |     let _: Enum1<isize> = Enum1::Some(1);
+   |                  ^^^^^
+   |
+   = 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:189:18
+   |
+LL |     let _: Enum1<usize> = ENUM1;
+   |                  ^^^^^
+   |
+   = 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:190:18
+   |
+LL |     let _: Enum1<isize> = Enum1::Some(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:218:25
+   |
+LL |     let _: Enum3<isize, usize> = ENUM3;
+   |                         ^^^^^
+   |
+   = 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:220:25
+   |
+LL |     let _: Enum3<isize, isize> = Enum3::Ok(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:221:25
+   |
+LL |     let _: Enum3<usize, usize> = Enum3::Ok(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:243:18
+   |
+LL |     let _: Enum5<isize> = Enum5::Some(1);
+   |                  ^^^^^
+   |
+   = 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:248:18
+   |
+LL |     let _: Enum5<usize> = ENUM5;
+   |                  ^^^^^
+   |
+   = 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:250:18
+   |
+LL |     let _: Enum5<isize> = Enum5::Some(0);
+   |                  ^^^^^
+   |
+   = help: add `#![feature(unstable_default)]` to the crate attributes to enable
+
 error[E0658]: use of unstable library feature 'box_alloc_param'
-  --> $DIR/generics-default-stability.rs:113:24
+  --> $DIR/generics-default-stability.rs:257:24
    |
 LL |     let _: Box1<isize, System> = Box1::new(1);
    |                        ^^^^^^
@@ -200,6 +488,6 @@ warning: use of deprecated field `unstable_generic_param::Struct5::field`: test
 LL |     let _: Struct5<isize> = Struct5 { field: 0 };
    |                                       ^^^^^^^^
 
-error: aborting due to 13 previous errors; 16 warnings emitted
+error: aborting due to 31 previous errors; 40 warnings emitted
 
 For more information about this error, try `rustc --explain E0658`.