Skip to content

Commit

Permalink
Additional default type parameter stability tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Avi-D-coder committed Jan 23, 2020
1 parent 8bcf35d commit 5551143
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,22 @@ pub trait Trait2<T = ()> {
#[stable(feature = "stable_test_feature", since = "1.0.0")]
fn foo() -> T;
}

#[stable(feature = "stable_test_feature", since = "1.0.0")]
pub struct Struct1<#[unstable(feature = "unstable_default", issue = "none")] T = usize> {
#[stable(feature = "stable_test_feature", since = "1.0.0")]
pub field: T,
}

#[stable(feature = "stable_test_feature", since = "1.0.0")]
pub struct Struct2<T = usize> {
#[stable(feature = "stable_test_feature", since = "1.0.0")]
pub field: T,
}


#[stable(feature = "stable_test_feature", since = "1.0.0")]
pub const STRUCT1: Struct1 = Struct1 { field: 1 };

#[stable(feature = "stable_test_feature", since = "1.0.0")]
pub const STRUCT2: Struct2 = Struct2 { field: 1 };
28 changes: 27 additions & 1 deletion src/test/ui/stability-attribute/generics-default-stability.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

extern crate unstable_generic_param;

use unstable_generic_param::{Trait1, Trait2};
use unstable_generic_param::*;

struct R;

Expand All @@ -22,4 +22,30 @@ impl Trait2<usize> for S {

fn main() {
let _ = S;

let _ = Struct1 { field: 1 }; //~ ERROR use of unstable library feature 'unstable_default'
let _: Struct1 = Struct1 { field: 1 }; //~ ERROR use of unstable library feature 'unstable_default'
let _: Struct1<usize> = Struct1 { field: 1 }; //~ ERROR use of unstable library feature 'unstable_default'

let _ = STRUCT1;
let _: Struct1 = STRUCT1; // ok
let _: Struct1<usize> = STRUCT1; //~ ERROR use of unstable library feature 'unstable_default'
let _: Struct1<usize> = STRUCT1; //~ ERROR use of unstable library feature 'unstable_default'
let _ = STRUCT1.field; // ok
let _: usize = STRUCT1.field; //~ ERROR use of unstable library feature 'unstable_default'
let _ = STRUCT1.field + 1; //~ ERROR use of unstable library feature 'unstable_default'
let _ = STRUCT1.field + 1usize; //~ ERROR use of unstable library feature 'unstable_default'

let _ = Struct2 { field: 1 }; // ok
let _: Struct2 = Struct2 { field: 1 }; // ok
let _: Struct2<usize> = Struct2 { field: 1 }; // ok

let _ = STRUCT2;
let _: Struct2 = STRUCT2; // ok
let _: Struct2<usize> = STRUCT2; // ok
let _: Struct2<usize> = STRUCT2; // ok
let _ = STRUCT2.field; // ok
let _: usize = STRUCT2.field; // ok
let _ = STRUCT2.field + 1; // ok
let _ = STRUCT2.field + 1usize; // ok
}

0 comments on commit 5551143

Please sign in to comment.