2020-01-23 00:00:00 +00:00
// check-pass
2016-11-10 17:08:21 +00:00
// aux-build:lint_stability.rs
// aux-build:inherited_stability.rs
// aux-build:stability_cfg1.rs
2019-03-12 00:49:17 +00:00
// aux-build:stability-cfg2.rs
2017-07-27 04:51:09 +00:00
#![ warn(deprecated) ]
2018-10-31 12:08:01 +00:00
#![ feature(staged_api, unstable_test_feature) ]
2016-11-10 17:08:21 +00:00
#![ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
#[ macro_use ]
extern crate lint_stability ;
mod cross_crate {
extern crate stability_cfg1 ;
extern crate stability_cfg2 ;
use lint_stability ::* ;
fn test ( ) {
type Foo = MethodTester ;
let foo = MethodTester ;
2020-07-25 17:49:46 +00:00
deprecated ( ) ; //~ WARN use of deprecated function `lint_stability::deprecated`
foo . method_deprecated ( ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated`
Foo ::method_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated`
< Foo > ::method_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated`
foo . trait_deprecated ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
Trait ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
< Foo > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
< Foo as Trait > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
deprecated_text ( ) ; //~ WARN use of deprecated function `lint_stability::deprecated_text`: text
foo . method_deprecated_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_text`: text
Foo ::method_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_text`: text
< Foo > ::method_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_text`: text
foo . trait_deprecated_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
Trait ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
< Foo > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
< Foo as Trait > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
deprecated_unstable ( ) ; //~ WARN use of deprecated function `lint_stability::deprecated_unstable`
foo . method_deprecated_unstable ( ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable`
Foo ::method_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable`
< Foo > ::method_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable`
foo . trait_deprecated_unstable ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
Trait ::trait_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
< Foo > ::trait_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
< Foo as Trait > ::trait_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
deprecated_unstable_text ( ) ; //~ WARN use of deprecated function `lint_stability::deprecated_unstable_text`: text
foo . method_deprecated_unstable_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable_text`: text
Foo ::method_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable_text`: text
< Foo > ::method_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable_text`: text
foo . trait_deprecated_unstable_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
Trait ::trait_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
< Foo > ::trait_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
< Foo as Trait > ::trait_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
2016-11-10 17:08:21 +00:00
unstable ( ) ;
foo . method_unstable ( ) ;
Foo ::method_unstable ( & foo ) ;
< Foo > ::method_unstable ( & foo ) ;
foo . trait_unstable ( ) ;
Trait ::trait_unstable ( & foo ) ;
< Foo > ::trait_unstable ( & foo ) ;
< Foo as Trait > ::trait_unstable ( & foo ) ;
unstable_text ( ) ;
foo . method_unstable_text ( ) ;
Foo ::method_unstable_text ( & foo ) ;
< Foo > ::method_unstable_text ( & foo ) ;
foo . trait_unstable_text ( ) ;
Trait ::trait_unstable_text ( & foo ) ;
< Foo > ::trait_unstable_text ( & foo ) ;
< Foo as Trait > ::trait_unstable_text ( & foo ) ;
stable ( ) ;
foo . method_stable ( ) ;
Foo ::method_stable ( & foo ) ;
< Foo > ::method_stable ( & foo ) ;
foo . trait_stable ( ) ;
Trait ::trait_stable ( & foo ) ;
< Foo > ::trait_stable ( & foo ) ;
< Foo as Trait > ::trait_stable ( & foo ) ;
stable_text ( ) ;
foo . method_stable_text ( ) ;
Foo ::method_stable_text ( & foo ) ;
< Foo > ::method_stable_text ( & foo ) ;
foo . trait_stable_text ( ) ;
Trait ::trait_stable_text ( & foo ) ;
< Foo > ::trait_stable_text ( & foo ) ;
< Foo as Trait > ::trait_stable_text ( & foo ) ;
struct S1 < T : TraitWithAssociatedTypes > ( T ::TypeUnstable ) ;
struct S2 < T : TraitWithAssociatedTypes > ( T ::TypeDeprecated ) ;
2020-07-25 17:49:46 +00:00
//~^ WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
//~| WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
2019-05-28 18:46:13 +00:00
type A = dyn TraitWithAssociatedTypes <
2017-11-18 15:38:56 +00:00
TypeUnstable = u8 ,
TypeDeprecated = u16 ,
2020-07-25 17:49:46 +00:00
//~^ WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`
//~| WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`
//~| WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`
2017-11-18 15:38:56 +00:00
> ;
2016-11-10 17:08:21 +00:00
2020-07-25 17:49:46 +00:00
let _ = DeprecatedStruct { //~ WARN use of deprecated struct `lint_stability::DeprecatedStruct`
i : 0 //~ WARN use of deprecated field `lint_stability::DeprecatedStruct::i`
2016-11-10 17:08:21 +00:00
} ;
let _ = DeprecatedUnstableStruct {
2020-07-25 17:49:46 +00:00
//~^ WARN use of deprecated struct `lint_stability::DeprecatedUnstableStruct`
i : 0 //~ WARN use of deprecated field `lint_stability::DeprecatedUnstableStruct::i`
2016-11-10 17:08:21 +00:00
} ;
let _ = UnstableStruct { i : 0 } ;
let _ = StableStruct { i : 0 } ;
2022-02-22 09:53:45 +00:00
let _ = DeprecatedUnitStruct ; //~ WARN use of deprecated unit struct `lint_stability::DeprecatedUnitStruct`
let _ = DeprecatedUnstableUnitStruct ; //~ WARN use of deprecated unit struct `lint_stability::DeprecatedUnstableUnitStruct`
2016-11-10 17:08:21 +00:00
let _ = UnstableUnitStruct ;
let _ = StableUnitStruct ;
2022-02-22 09:53:45 +00:00
let _ = Enum ::DeprecatedVariant ; //~ WARN use of deprecated unit variant `lint_stability::Enum::DeprecatedVariant`
let _ = Enum ::DeprecatedUnstableVariant ; //~ WARN use of deprecated unit variant `lint_stability::Enum::DeprecatedUnstableVariant`
2016-11-10 17:08:21 +00:00
let _ = Enum ::UnstableVariant ;
let _ = Enum ::StableVariant ;
2022-02-22 09:53:45 +00:00
let _ = DeprecatedTupleStruct ( 1 ) ; //~ WARN use of deprecated tuple struct `lint_stability::DeprecatedTupleStruct`
let _ = DeprecatedUnstableTupleStruct ( 1 ) ; //~ WARN use of deprecated tuple struct `lint_stability::DeprecatedUnstableTupleStruct`
2016-11-10 17:08:21 +00:00
let _ = UnstableTupleStruct ( 1 ) ;
let _ = StableTupleStruct ( 1 ) ;
2022-10-12 16:12:19 +00:00
// At the moment, the lint checker only checks stability
2016-11-10 17:08:21 +00:00
// in the arguments of macros.
// Eventually, we will want to lint the contents of the
// macro in the module *defining* it. Also, stability levels
// on macros themselves are not yet linted.
2020-07-25 17:49:46 +00:00
macro_test_arg! ( deprecated_text ( ) ) ; //~ WARN use of deprecated function `lint_stability::deprecated_text`: text
macro_test_arg! ( deprecated_unstable_text ( ) ) ; //~ WARN use of deprecated function `lint_stability::deprecated_unstable_text`: text
macro_test_arg! ( macro_test_arg! ( deprecated_text ( ) ) ) ; //~ WARN use of deprecated function `lint_stability::deprecated_text`: text
2016-11-10 17:08:21 +00:00
}
fn test_method_param < Foo : Trait > ( foo : Foo ) {
2020-07-25 17:49:46 +00:00
foo . trait_deprecated ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
Trait ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
< Foo > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
< Foo as Trait > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
foo . trait_deprecated_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
Trait ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
< Foo > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
< Foo as Trait > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
foo . trait_deprecated_unstable ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
Trait ::trait_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
< Foo > ::trait_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
< Foo as Trait > ::trait_deprecated_unstable ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
foo . trait_deprecated_unstable_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
Trait ::trait_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
< Foo > ::trait_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
< Foo as Trait > ::trait_deprecated_unstable_text ( & foo ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
2016-11-10 17:08:21 +00:00
foo . trait_unstable ( ) ;
Trait ::trait_unstable ( & foo ) ;
< Foo > ::trait_unstable ( & foo ) ;
< Foo as Trait > ::trait_unstable ( & foo ) ;
foo . trait_unstable_text ( ) ;
Trait ::trait_unstable_text ( & foo ) ;
< Foo > ::trait_unstable_text ( & foo ) ;
< Foo as Trait > ::trait_unstable_text ( & foo ) ;
foo . trait_stable ( ) ;
Trait ::trait_stable ( & foo ) ;
< Foo > ::trait_stable ( & foo ) ;
< Foo as Trait > ::trait_stable ( & foo ) ;
}
2019-05-28 18:46:13 +00:00
fn test_method_object ( foo : & dyn Trait ) {
2020-07-25 17:49:46 +00:00
foo . trait_deprecated ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated`
foo . trait_deprecated_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text
foo . trait_deprecated_unstable ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`
foo . trait_deprecated_unstable_text ( ) ; //~ WARN use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text
2016-11-10 17:08:21 +00:00
foo . trait_unstable ( ) ;
foo . trait_unstable_text ( ) ;
foo . trait_stable ( ) ;
}
struct S ;
impl UnstableTrait for S { }
2020-07-25 17:49:46 +00:00
impl DeprecatedTrait for S { } //~ WARN use of deprecated trait `lint_stability::DeprecatedTrait`: text
2016-11-10 17:08:21 +00:00
trait LocalTrait : UnstableTrait { }
2020-07-25 17:49:46 +00:00
trait LocalTrait2 : DeprecatedTrait { } //~ WARN use of deprecated trait `lint_stability::DeprecatedTrait`: text
2016-11-10 17:08:21 +00:00
impl Trait for S {
fn trait_stable ( & self ) { }
fn trait_unstable ( & self ) { }
}
}
mod inheritance {
extern crate inherited_stability ;
use self ::inherited_stability ::* ;
fn test_inheritance ( ) {
unstable ( ) ;
stable ( ) ;
stable_mod ::unstable ( ) ;
stable_mod ::stable ( ) ;
2020-07-25 17:49:46 +00:00
unstable_mod ::deprecated ( ) ; //~ WARN use of deprecated function `inheritance::inherited_stability::unstable_mod::deprecated`: text
2016-11-10 17:08:21 +00:00
unstable_mod ::unstable ( ) ;
let _ = Unstable ::UnstableVariant ;
let _ = Unstable ::StableVariant ;
let x : usize = 0 ;
x . unstable ( ) ;
x . stable ( ) ;
}
}
mod this_crate {
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub fn deprecated ( ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub fn deprecated_text ( ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
pub fn unstable ( ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , reason = " text " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
pub fn unstable_text ( ) { }
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub fn stable ( ) { }
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub fn stable_text ( ) { }
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub struct MethodTester ;
impl MethodTester {
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub fn method_deprecated ( & self ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub fn method_deprecated_text ( & self ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
pub fn method_unstable ( & self ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , reason = " text " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
pub fn method_unstable_text ( & self ) { }
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub fn method_stable ( & self ) { }
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub fn method_stable_text ( & self ) { }
}
pub trait Trait {
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
fn trait_deprecated ( & self ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
fn trait_deprecated_text ( & self ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
fn trait_unstable ( & self ) { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , reason = " text " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
fn trait_unstable_text ( & self ) { }
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
fn trait_stable ( & self ) { }
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
fn trait_stable_text ( & self ) { }
}
impl Trait for MethodTester { }
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub struct DeprecatedStruct {
2018-07-23 11:22:23 +00:00
#[ stable(feature = " stable_test_feature " , since = " 1.0.0 " ) ] i : isize
2016-11-10 17:08:21 +00:00
}
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
pub struct UnstableStruct {
2018-07-23 11:22:23 +00:00
#[ stable(feature = " stable_test_feature " , since = " 1.0.0 " ) ] i : isize
2016-11-10 17:08:21 +00:00
}
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub struct StableStruct {
2018-07-23 11:22:23 +00:00
#[ stable(feature = " stable_test_feature " , since = " 1.0.0 " ) ] i : isize
2016-11-10 17:08:21 +00:00
}
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub struct DeprecatedUnitStruct ;
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
pub struct UnstableUnitStruct ;
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub struct StableUnitStruct ;
pub enum Enum {
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
DeprecatedVariant ,
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
UnstableVariant ,
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
StableVariant ,
}
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub struct DeprecatedTupleStruct ( isize ) ;
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2016-11-10 17:08:21 +00:00
pub struct UnstableTupleStruct ( isize ) ;
#[ stable(feature = " rust1 " , since = " 1.0.0 " ) ]
pub struct StableTupleStruct ( isize ) ;
fn test ( ) {
// Only the deprecated cases of the following should generate
// errors, because other stability attributes now have meaning
// only *across* crates, not within a single crate.
type Foo = MethodTester ;
let foo = MethodTester ;
2020-07-25 17:49:46 +00:00
deprecated ( ) ; //~ WARN use of deprecated function `this_crate::deprecated`
foo . method_deprecated ( ) ; //~ WARN use of deprecated associated function `this_crate::MethodTester::method_deprecated`
Foo ::method_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::MethodTester::method_deprecated`
< Foo > ::method_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::MethodTester::method_deprecated`
foo . trait_deprecated ( ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
Trait ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
< Foo > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
< Foo as Trait > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
deprecated_text ( ) ; //~ WARN use of deprecated function `this_crate::deprecated_text`: text
foo . method_deprecated_text ( ) ; //~ WARN use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text
Foo ::method_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text
< Foo > ::method_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text
foo . trait_deprecated_text ( ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
Trait ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
< Foo > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
< Foo as Trait > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
2016-11-10 17:08:21 +00:00
unstable ( ) ;
foo . method_unstable ( ) ;
Foo ::method_unstable ( & foo ) ;
< Foo > ::method_unstable ( & foo ) ;
foo . trait_unstable ( ) ;
Trait ::trait_unstable ( & foo ) ;
< Foo > ::trait_unstable ( & foo ) ;
< Foo as Trait > ::trait_unstable ( & foo ) ;
unstable_text ( ) ;
foo . method_unstable_text ( ) ;
Foo ::method_unstable_text ( & foo ) ;
< Foo > ::method_unstable_text ( & foo ) ;
foo . trait_unstable_text ( ) ;
Trait ::trait_unstable_text ( & foo ) ;
< Foo > ::trait_unstable_text ( & foo ) ;
< Foo as Trait > ::trait_unstable_text ( & foo ) ;
stable ( ) ;
foo . method_stable ( ) ;
Foo ::method_stable ( & foo ) ;
< Foo > ::method_stable ( & foo ) ;
foo . trait_stable ( ) ;
Trait ::trait_stable ( & foo ) ;
< Foo > ::trait_stable ( & foo ) ;
< Foo as Trait > ::trait_stable ( & foo ) ;
stable_text ( ) ;
foo . method_stable_text ( ) ;
Foo ::method_stable_text ( & foo ) ;
< Foo > ::method_stable_text ( & foo ) ;
foo . trait_stable_text ( ) ;
Trait ::trait_stable_text ( & foo ) ;
< Foo > ::trait_stable_text ( & foo ) ;
< Foo as Trait > ::trait_stable_text ( & foo ) ;
let _ = DeprecatedStruct {
2020-07-25 17:49:46 +00:00
//~^ WARN use of deprecated struct `this_crate::DeprecatedStruct`
i : 0 //~ WARN use of deprecated field `this_crate::DeprecatedStruct::i`
2016-11-10 17:08:21 +00:00
} ;
let _ = UnstableStruct { i : 0 } ;
let _ = StableStruct { i : 0 } ;
2020-07-25 17:49:46 +00:00
let _ = DeprecatedUnitStruct ; //~ WARN use of deprecated unit struct `this_crate::DeprecatedUnitStruct`
2016-11-10 17:08:21 +00:00
let _ = UnstableUnitStruct ;
let _ = StableUnitStruct ;
2020-07-25 17:49:46 +00:00
let _ = Enum ::DeprecatedVariant ; //~ WARN use of deprecated unit variant `this_crate::Enum::DeprecatedVariant`
2016-11-10 17:08:21 +00:00
let _ = Enum ::UnstableVariant ;
let _ = Enum ::StableVariant ;
2020-07-25 17:49:46 +00:00
let _ = DeprecatedTupleStruct ( 1 ) ; //~ WARN use of deprecated tuple struct `this_crate::DeprecatedTupleStruct`
2016-11-10 17:08:21 +00:00
let _ = UnstableTupleStruct ( 1 ) ;
let _ = StableTupleStruct ( 1 ) ;
}
fn test_method_param < Foo : Trait > ( foo : Foo ) {
2020-07-25 17:49:46 +00:00
foo . trait_deprecated ( ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
Trait ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
< Foo > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
< Foo as Trait > ::trait_deprecated ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
foo . trait_deprecated_text ( ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
Trait ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
< Foo > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
< Foo as Trait > ::trait_deprecated_text ( & foo ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
2016-11-10 17:08:21 +00:00
foo . trait_unstable ( ) ;
Trait ::trait_unstable ( & foo ) ;
< Foo > ::trait_unstable ( & foo ) ;
< Foo as Trait > ::trait_unstable ( & foo ) ;
foo . trait_unstable_text ( ) ;
Trait ::trait_unstable_text ( & foo ) ;
< Foo > ::trait_unstable_text ( & foo ) ;
< Foo as Trait > ::trait_unstable_text ( & foo ) ;
foo . trait_stable ( ) ;
Trait ::trait_stable ( & foo ) ;
< Foo > ::trait_stable ( & foo ) ;
< Foo as Trait > ::trait_stable ( & foo ) ;
}
2019-05-28 18:46:13 +00:00
fn test_method_object ( foo : & dyn Trait ) {
2020-07-25 17:49:46 +00:00
foo . trait_deprecated ( ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated`
foo . trait_deprecated_text ( ) ; //~ WARN use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text
2016-11-10 17:08:21 +00:00
foo . trait_unstable ( ) ;
foo . trait_unstable_text ( ) ;
foo . trait_stable ( ) ;
}
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
fn test_fn_body ( ) {
fn fn_in_body ( ) { }
2020-07-25 17:49:46 +00:00
fn_in_body ( ) ; //~ WARN use of deprecated function `this_crate::test_fn_body::fn_in_body`: text
2016-11-10 17:08:21 +00:00
}
impl MethodTester {
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
fn test_method_body ( & self ) {
fn fn_in_body ( ) { }
2020-07-25 17:49:46 +00:00
fn_in_body ( ) ; //~ WARN use of deprecated function `this_crate::MethodTester::test_method_body::fn_in_body`: text
2016-11-10 17:08:21 +00:00
}
}
2019-12-21 11:16:18 +00:00
#[ unstable(feature = " unstable_test_feature " , issue = " none " ) ]
2022-03-05 02:59:18 +00:00
#[ deprecated(since = " 1.0.0 " , note = " text " ) ]
2016-11-10 17:08:21 +00:00
pub trait DeprecatedTrait {
fn dummy ( & self ) { }
}
struct S ;
2020-07-25 17:49:46 +00:00
impl DeprecatedTrait for S { } //~ WARN use of deprecated trait `this_crate::DeprecatedTrait`
2016-11-10 17:08:21 +00:00
2020-07-25 17:49:46 +00:00
trait LocalTrait : DeprecatedTrait { } //~ WARN use of deprecated trait `this_crate::DeprecatedTrait`
2016-11-10 17:08:21 +00:00
}
2018-10-31 12:08:01 +00:00
fn main ( ) { }