rustc: add item name to deprecated lint warning

This commit is contained in:
Kevin Butler 2017-11-01 23:34:44 +00:00
parent 8b22e70b2d
commit 725ddb4a4b
6 changed files with 308 additions and 223 deletions

View file

@ -516,11 +516,13 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
return;
}
let lint_deprecated = |note: Option<Symbol>| {
let lint_deprecated = |def_id: DefId, note: Option<Symbol>| {
let path = self.item_path_str(def_id);
let msg = if let Some(note) = note {
format!("use of deprecated item: {}", note)
format!("use of deprecated item '{}': {}", path, note)
} else {
format!("use of deprecated item")
format!("use of deprecated item '{}'", path)
};
self.lint_node(lint::builtin::DEPRECATED, id, span, &msg);
@ -538,7 +540,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
};
if !skip {
lint_deprecated(depr_entry.attr.note);
lint_deprecated(def_id, depr_entry.attr.note);
}
}
@ -557,7 +559,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
if let Some(&Stability{rustc_depr: Some(attr::RustcDeprecation { reason, .. }), ..})
= stability {
if id != ast::DUMMY_NODE_ID {
lint_deprecated(Some(reason));
lint_deprecated(def_id, Some(reason));
}
}

View file

@ -151,9 +151,23 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
}
}
cur_path.push(self.def_key(cur_def)
.disambiguated_data.data.get_opt_name().unwrap_or_else(||
Symbol::intern("<unnamed>").as_str()));
let mut cur_def_key = self.def_key(cur_def);
// For a UnitStruct or TupleStruct we want the name of its parent rather than <unnamed>.
if let DefPathData::StructCtor = cur_def_key.disambiguated_data.data {
let parent = DefId {
krate: cur_def.krate,
index: cur_def_key.parent.expect("DefPathData::StructCtor missing a parent"),
};
cur_def_key = self.def_key(parent);
}
let data = cur_def_key.disambiguated_data.data;
let symbol =
data.get_opt_name().unwrap_or_else(|| Symbol::intern("<unnamed>").as_str());
cur_path.push(symbol);
match visible_parent_map.get(&cur_def) {
Some(&def) => cur_def = def,
None => return false,

View file

@ -52,6 +52,24 @@ pub enum Enum {
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedTupleStruct(pub isize);
pub mod nested {
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedStruct {
pub i: isize
}
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedUnitStruct;
pub enum Enum {
#[deprecated(since = "1.0.0", note = "text")]
DeprecatedVariant,
}
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedTupleStruct(pub isize);
}
pub struct Stable {
#[deprecated(since = "1.0.0", note = "text")]
pub override2: u8,

View file

@ -9,6 +9,7 @@
// except according to those terms.
// aux-build:deprecation-lint.rs
// ignore-tidy-linelength
#![deny(deprecated)]
#![allow(warnings)]
@ -23,76 +24,86 @@ mod cross_crate {
type Foo = MethodTester;
let foo = MethodTester;
deprecated(); //~ ERROR use of deprecated item
foo.method_deprecated(); //~ ERROR use of deprecated item
Foo::method_deprecated(&foo); //~ ERROR use of deprecated item
<Foo>::method_deprecated(&foo); //~ ERROR use of deprecated item
foo.trait_deprecated(); //~ ERROR use of deprecated item
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item
deprecated(); //~ ERROR use of deprecated item 'deprecation_lint::deprecated'
foo.method_deprecated(); //~ ERROR use of deprecated item 'deprecation_lint::MethodTester::method_deprecated'
Foo::method_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::MethodTester::method_deprecated'
<Foo>::method_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::MethodTester::method_deprecated'
foo.trait_deprecated(); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
deprecated_text(); //~ ERROR use of deprecated item: text
foo.method_deprecated_text(); //~ ERROR use of deprecated item: text
Foo::method_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo>::method_deprecated_text(&foo); //~ ERROR use of deprecated item: text
foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
deprecated_text(); //~ ERROR use of deprecated item 'deprecation_lint::deprecated_text': text
foo.method_deprecated_text(); //~ ERROR use of deprecated item 'deprecation_lint::MethodTester::method_deprecated_text': text
Foo::method_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::MethodTester::method_deprecated_text': text
<Foo>::method_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::MethodTester::method_deprecated_text': text
foo.trait_deprecated_text(); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
let _ = DeprecatedStruct { //~ ERROR use of deprecated item
i: 0 //~ ERROR use of deprecated item
let _ = DeprecatedStruct { //~ ERROR use of deprecated item 'deprecation_lint::DeprecatedStruct': text
i: 0 //~ ERROR use of deprecated item 'deprecation_lint::DeprecatedStruct::i': text
};
let _ = DeprecatedUnitStruct; //~ ERROR use of deprecated item
let _ = DeprecatedUnitStruct; //~ ERROR use of deprecated item 'deprecation_lint::DeprecatedUnitStruct': text
let _ = Enum::DeprecatedVariant; //~ ERROR use of deprecated item
let _ = Enum::DeprecatedVariant; //~ ERROR use of deprecated item 'deprecation_lint::Enum::DeprecatedVariant': text
let _ = DeprecatedTupleStruct (1); //~ ERROR use of deprecated item
let _ = DeprecatedTupleStruct (1); //~ ERROR use of deprecated item 'deprecation_lint::DeprecatedTupleStruct': text
let _ = nested::DeprecatedStruct { //~ ERROR use of deprecated item 'deprecation_lint::nested::DeprecatedStruct': text
i: 0 //~ ERROR use of deprecated item 'deprecation_lint::nested::DeprecatedStruct::i': text
};
let _ = nested::DeprecatedUnitStruct; //~ ERROR use of deprecated item 'deprecation_lint::nested::DeprecatedUnitStruct': text
let _ = nested::Enum::DeprecatedVariant; //~ ERROR use of deprecated item 'deprecation_lint::nested::Enum::DeprecatedVariant': text
let _ = nested::DeprecatedTupleStruct (1); //~ ERROR use of deprecated item 'deprecation_lint::nested::DeprecatedTupleStruct': text
// At the moment, the lint checker only checks stability in
// 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.
macro_test_arg!(deprecated_text()); //~ ERROR use of deprecated item: text
macro_test_arg!(macro_test_arg!(deprecated_text())); //~ ERROR use of deprecated item: text
macro_test_arg!(deprecated_text()); //~ ERROR use of deprecated item 'deprecation_lint::deprecated_text': text
macro_test_arg!(macro_test_arg!(deprecated_text())); //~ ERROR use of deprecated item 'deprecation_lint::deprecated_text': text
}
fn test_method_param<Foo: Trait>(foo: Foo) {
foo.trait_deprecated(); //~ ERROR use of deprecated item
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item
foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
foo.trait_deprecated(); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
}
fn test_method_object(foo: &Trait) {
foo.trait_deprecated(); //~ ERROR use of deprecated item
foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
foo.trait_deprecated(); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ ERROR use of deprecated item 'deprecation_lint::Trait::trait_deprecated_text': text
}
struct S;
impl DeprecatedTrait for S {} //~ ERROR use of deprecated item: text
trait LocalTrait : DeprecatedTrait { } //~ ERROR use of deprecated item: text
impl DeprecatedTrait for S {} //~ ERROR use of deprecated item 'deprecation_lint::DeprecatedTrait': text
trait LocalTrait : DeprecatedTrait { } //~ ERROR use of deprecated item 'deprecation_lint::DeprecatedTrait': text
pub fn foo() {
let x = Stable {
override2: 3,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Stable::override2': text
};
let _ = x.override2;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Stable::override2': text
let Stable {
override2: _
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Stable::override2': text
} = x;
// all fine
let Stable { .. } = x;
@ -100,56 +111,56 @@ mod cross_crate {
let x = Stable2(1, 2, 3);
let _ = x.2;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Stable2::2': text
let Stable2(_,
_,
_)
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Stable2::2': text
= x;
// all fine
let Stable2(..) = x;
let x = Deprecated {
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated': text
inherit: 1,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated::inherit': text
};
let _ = x.inherit;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated::inherit': text
let Deprecated {
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated': text
inherit: _,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated::inherit': text
} = x;
let Deprecated
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated': text
{ .. } = x;
let x = Deprecated2(1, 2, 3);
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2': text
let _ = x.0;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2::0': text
let _ = x.1;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2::1': text
let _ = x.2;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2::2': text
let Deprecated2
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2': text
(_,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2::0': text
_,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2::1': text
_)
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2::2': text
= x;
let Deprecated2
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'deprecation_lint::Deprecated2': text
// the patterns are all fine:
(..) = x;
}
@ -159,7 +170,7 @@ mod inheritance {
use deprecation_lint::*;
fn test_inheritance() {
deprecated_mod::deprecated(); //~ ERROR use of deprecated item
deprecated_mod::deprecated(); //~ ERROR use of deprecated item 'deprecation_lint::deprecated_mod::deprecated': text
}
}
@ -209,7 +220,27 @@ mod this_crate {
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedTupleStruct(isize);
mod nested {
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedStruct {
i: isize
}
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedUnitStruct;
pub enum Enum {
#[deprecated(since = "1.0.0", note = "text")]
DeprecatedVariant,
}
#[deprecated(since = "1.0.0", note = "text")]
pub struct DeprecatedTupleStruct(pub isize);
}
fn test() {
use self::nested;
// 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.
@ -217,50 +248,61 @@ mod this_crate {
type Foo = MethodTester;
let foo = MethodTester;
deprecated(); //~ ERROR use of deprecated item
foo.method_deprecated(); //~ ERROR use of deprecated item
Foo::method_deprecated(&foo); //~ ERROR use of deprecated item
<Foo>::method_deprecated(&foo); //~ ERROR use of deprecated item
foo.trait_deprecated(); //~ ERROR use of deprecated item
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item
deprecated(); //~ ERROR use of deprecated item 'this_crate::deprecated'
foo.method_deprecated(); //~ ERROR use of deprecated item 'this_crate::MethodTester::method_deprecated'
Foo::method_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::MethodTester::method_deprecated'
<Foo>::method_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::MethodTester::method_deprecated'
foo.trait_deprecated(); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
deprecated_text(); //~ ERROR use of deprecated item: text
foo.method_deprecated_text(); //~ ERROR use of deprecated item: text
Foo::method_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo>::method_deprecated_text(&foo); //~ ERROR use of deprecated item: text
foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
deprecated_text(); //~ ERROR use of deprecated item 'this_crate::deprecated_text': text
foo.method_deprecated_text(); //~ ERROR use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text
Foo::method_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text
<Foo>::method_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text
foo.trait_deprecated_text(); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
let _ = DeprecatedStruct {
//~^ ERROR use of deprecated item
i: 0 //~ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate::DeprecatedStruct': text
i: 0 //~ ERROR use of deprecated item 'this_crate::DeprecatedStruct::i': text
};
let _ = DeprecatedUnitStruct; //~ ERROR use of deprecated item
let _ = DeprecatedUnitStruct; //~ ERROR use of deprecated item 'this_crate::DeprecatedUnitStruct': text
let _ = Enum::DeprecatedVariant; //~ ERROR use of deprecated item
let _ = Enum::DeprecatedVariant; //~ ERROR use of deprecated item 'this_crate::Enum::DeprecatedVariant': text
let _ = DeprecatedTupleStruct (1); //~ ERROR use of deprecated item
let _ = DeprecatedTupleStruct (1); //~ ERROR use of deprecated item 'this_crate::DeprecatedTupleStruct': text
let _ = nested::DeprecatedStruct {
//~^ ERROR use of deprecated item 'this_crate::nested::DeprecatedStruct': text
i: 0 //~ ERROR use of deprecated item 'this_crate::nested::DeprecatedStruct::i': text
};
let _ = nested::DeprecatedUnitStruct; //~ ERROR use of deprecated item 'this_crate::nested::DeprecatedUnitStruct': text
let _ = nested::Enum::DeprecatedVariant; //~ ERROR use of deprecated item 'this_crate::nested::Enum::DeprecatedVariant': text
let _ = nested::DeprecatedTupleStruct (1); //~ ERROR use of deprecated item 'this_crate::nested::DeprecatedTupleStruct': text
}
fn test_method_param<Foo: Trait>(foo: Foo) {
foo.trait_deprecated(); //~ ERROR use of deprecated item
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item
foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item: text
foo.trait_deprecated(); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
}
fn test_method_object(foo: &Trait) {
foo.trait_deprecated(); //~ ERROR use of deprecated item
foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
foo.trait_deprecated(); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ ERROR use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
}
#[deprecated(since = "1.0.0", note = "text")]
@ -269,6 +311,14 @@ mod this_crate {
fn_in_body();
}
fn test_fn_closure_body() {
let _ = || {
#[deprecated]
fn bar() { }
bar(); //~ ERROR use of deprecated item 'this_crate::test_fn_closure_body::{{closure}}::bar'
};
}
impl MethodTester {
#[deprecated(since = "1.0.0", note = "text")]
fn test_method_body(&self) {
@ -284,9 +334,9 @@ mod this_crate {
struct S;
impl DeprecatedTrait for S { } //~ ERROR use of deprecated item
impl DeprecatedTrait for S { } //~ ERROR use of deprecated item 'this_crate::DeprecatedTrait': text
trait LocalTrait : DeprecatedTrait { } //~ ERROR use of deprecated item
trait LocalTrait : DeprecatedTrait { } //~ ERROR use of deprecated item 'this_crate::DeprecatedTrait': text
}
mod this_crate2 {
@ -312,15 +362,15 @@ mod this_crate2 {
pub fn foo() {
let x = Stable {
override2: 3,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Stable::override2': text
};
let _ = x.override2;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Stable::override2': text
let Stable {
override2: _
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Stable::override2': text
} = x;
// all fine
let Stable { .. } = x;
@ -328,57 +378,57 @@ mod this_crate2 {
let x = Stable2(1, 2, 3);
let _ = x.2;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Stable2::2': text
let Stable2(_,
_,
_)
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Stable2::2': text
= x;
// all fine
let Stable2(..) = x;
let x = Deprecated {
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated': text
inherit: 1,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated::inherit': text
};
let _ = x.inherit;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated::inherit': text
let Deprecated {
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated': text
inherit: _,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated::inherit': text
} = x;
let Deprecated
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated': text
// the patterns are all fine:
{ .. } = x;
let x = Deprecated2(1, 2, 3);
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2': text
let _ = x.0;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2::0': text
let _ = x.1;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2::1': text
let _ = x.2;
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2::2': text
let Deprecated2
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2': text
(_,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2::0': text
_,
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2::1': text
_)
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2::2': text
= x;
let Deprecated2
//~^ ERROR use of deprecated item
//~^ ERROR use of deprecated item 'this_crate2::Deprecated2': text
// the patterns are all fine:
(..) = x;
}

View file

@ -18,13 +18,13 @@
extern crate lint_output_format;
use lint_output_format::{foo, bar};
//~^ WARNING use of deprecated item: text
//~^ WARNING use of deprecated item 'lint_output_format::foo': text
//~| NOTE #[warn(deprecated)] on by default
#[rustc_error]
fn main() { //~ ERROR: compilation successful
let _x = foo();
//~^ WARNING use of deprecated item: text
//~^ WARNING use of deprecated item 'lint_output_format::foo': text
//~| NOTE #[warn(deprecated)] on by default
let _y = bar();
}

View file

@ -12,6 +12,7 @@
// aux-build:inherited_stability.rs
// aux-build:stability_cfg1.rs
// aux-build:stability_cfg2.rs
// ignore-tidy-linelength
#![warn(deprecated)]
#![allow(dead_code, unused_extern_crates)]
@ -32,41 +33,41 @@ mod cross_crate {
type Foo = MethodTester;
let foo = MethodTester;
deprecated(); //~ WARN use of deprecated item
foo.method_deprecated(); //~ WARN use of deprecated item
Foo::method_deprecated(&foo); //~ WARN use of deprecated item
<Foo>::method_deprecated(&foo); //~ WARN use of deprecated item
foo.trait_deprecated(); //~ WARN use of deprecated item
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item
deprecated(); //~ WARN use of deprecated item 'lint_stability::deprecated'
foo.method_deprecated(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated'
Foo::method_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated'
<Foo>::method_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated'
foo.trait_deprecated(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
deprecated_text(); //~ WARN use of deprecated item: text
foo.method_deprecated_text(); //~ WARN use of deprecated item: text
Foo::method_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo>::method_deprecated_text(&foo); //~ WARN use of deprecated item: text
foo.trait_deprecated_text(); //~ WARN use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
deprecated_text(); //~ WARN use of deprecated item 'lint_stability::deprecated_text': text
foo.method_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_text': text
Foo::method_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_text': text
<Foo>::method_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_text': text
foo.trait_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
deprecated_unstable(); //~ WARN use of deprecated item
foo.method_deprecated_unstable(); //~ WARN use of deprecated item
Foo::method_deprecated_unstable(&foo); //~ WARN use of deprecated item
<Foo>::method_deprecated_unstable(&foo); //~ WARN use of deprecated item
foo.trait_deprecated_unstable(); //~ WARN use of deprecated item
Trait::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item
<Foo>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item
<Foo as Trait>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item
deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::deprecated_unstable'
foo.method_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable'
Foo::method_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable'
<Foo>::method_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable'
foo.trait_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
Trait::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
<Foo>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
<Foo as Trait>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
deprecated_unstable_text(); //~ WARN use of deprecated item: text
foo.method_deprecated_unstable_text(); //~ WARN use of deprecated item: text
Foo::method_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
<Foo>::method_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item: text
Trait::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
<Foo>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
<Foo as Trait>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::deprecated_unstable_text': text
foo.method_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable_text': text
Foo::method_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable_text': text
<Foo>::method_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::MethodTester::method_deprecated_unstable_text': text
foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
Trait::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
<Foo>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
<Foo as Trait>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
unstable();
foo.method_unstable();
@ -106,30 +107,30 @@ mod cross_crate {
struct S1<T: TraitWithAssociatedTypes>(T::TypeUnstable);
struct S2<T: TraitWithAssociatedTypes>(T::TypeDeprecated);
//~^ WARN use of deprecated item
//~^ WARN use of deprecated item 'lint_stability::TraitWithAssociatedTypes::TypeDeprecated': text
let _ = DeprecatedStruct { //~ WARN use of deprecated item
i: 0 //~ WARN use of deprecated item
let _ = DeprecatedStruct { //~ WARN use of deprecated item 'lint_stability::DeprecatedStruct'
i: 0 //~ WARN use of deprecated item 'lint_stability::DeprecatedStruct::i'
};
let _ = DeprecatedUnstableStruct {
//~^ WARN use of deprecated item
i: 0 //~ WARN use of deprecated item
//~^ WARN use of deprecated item 'lint_stability::DeprecatedUnstableStruct'
i: 0 //~ WARN use of deprecated item 'lint_stability::DeprecatedUnstableStruct::i'
};
let _ = UnstableStruct { i: 0 };
let _ = StableStruct { i: 0 };
let _ = DeprecatedUnitStruct; //~ WARN use of deprecated item
let _ = DeprecatedUnstableUnitStruct; //~ WARN use of deprecated item
let _ = DeprecatedUnitStruct; //~ WARN use of deprecated item 'lint_stability::DeprecatedUnitStruct'
let _ = DeprecatedUnstableUnitStruct; //~ WARN use of deprecated item 'lint_stability::DeprecatedUnstableUnitStruct'
let _ = UnstableUnitStruct;
let _ = StableUnitStruct;
let _ = Enum::DeprecatedVariant; //~ WARN use of deprecated item
let _ = Enum::DeprecatedUnstableVariant; //~ WARN use of deprecated item
let _ = Enum::DeprecatedVariant; //~ WARN use of deprecated item 'lint_stability::Enum::DeprecatedVariant'
let _ = Enum::DeprecatedUnstableVariant; //~ WARN use of deprecated item 'lint_stability::Enum::DeprecatedUnstableVariant'
let _ = Enum::UnstableVariant;
let _ = Enum::StableVariant;
let _ = DeprecatedTupleStruct (1); //~ WARN use of deprecated item
let _ = DeprecatedUnstableTupleStruct (1); //~ WARN use of deprecated item
let _ = DeprecatedTupleStruct (1); //~ WARN use of deprecated item 'lint_stability::DeprecatedTupleStruct'
let _ = DeprecatedUnstableTupleStruct (1); //~ WARN use of deprecated item 'lint_stability::DeprecatedUnstableTupleStruct'
let _ = UnstableTupleStruct (1);
let _ = StableTupleStruct (1);
@ -138,28 +139,28 @@ mod cross_crate {
// 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.
macro_test_arg!(deprecated_text()); //~ WARN use of deprecated item: text
macro_test_arg!(deprecated_unstable_text()); //~ WARN use of deprecated item: text
macro_test_arg!(macro_test_arg!(deprecated_text())); //~ WARN use of deprecated item: text
macro_test_arg!(deprecated_text()); //~ WARN use of deprecated item 'lint_stability::deprecated_text': text
macro_test_arg!(deprecated_unstable_text()); //~ WARN use of deprecated item 'lint_stability::deprecated_unstable_text': text
macro_test_arg!(macro_test_arg!(deprecated_text())); //~ WARN use of deprecated item 'lint_stability::deprecated_text': text
}
fn test_method_param<Foo: Trait>(foo: Foo) {
foo.trait_deprecated(); //~ WARN use of deprecated item
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item
foo.trait_deprecated_text(); //~ WARN use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
foo.trait_deprecated_unstable(); //~ WARN use of deprecated item
Trait::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item
<Foo>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item
<Foo as Trait>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item
foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item: text
Trait::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
<Foo>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
<Foo as Trait>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item: text
foo.trait_deprecated(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
foo.trait_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
Trait::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
<Foo>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
<Foo as Trait>::trait_deprecated_unstable(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
Trait::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
<Foo>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
<Foo as Trait>::trait_deprecated_unstable_text(&foo); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
foo.trait_unstable();
Trait::trait_unstable(&foo);
<Foo>::trait_unstable(&foo);
@ -175,10 +176,10 @@ mod cross_crate {
}
fn test_method_object(foo: &Trait) {
foo.trait_deprecated(); //~ WARN use of deprecated item
foo.trait_deprecated_text(); //~ WARN use of deprecated item: text
foo.trait_deprecated_unstable(); //~ WARN use of deprecated item
foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item: text
foo.trait_deprecated(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_text': text
foo.trait_deprecated_unstable(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable'
foo.trait_deprecated_unstable_text(); //~ WARN use of deprecated item 'lint_stability::Trait::trait_deprecated_unstable_text': text
foo.trait_unstable();
foo.trait_unstable_text();
foo.trait_stable();
@ -187,9 +188,9 @@ mod cross_crate {
struct S;
impl UnstableTrait for S { }
impl DeprecatedTrait for S {} //~ WARN use of deprecated item: text
impl DeprecatedTrait for S {} //~ WARN use of deprecated item 'lint_stability::DeprecatedTrait': text
trait LocalTrait : UnstableTrait { }
trait LocalTrait2 : DeprecatedTrait { } //~ WARN use of deprecated item: text
trait LocalTrait2 : DeprecatedTrait { } //~ WARN use of deprecated item 'lint_stability::DeprecatedTrait': text
impl Trait for S {
fn trait_stable(&self) {}
@ -208,7 +209,7 @@ mod inheritance {
stable_mod::unstable();
stable_mod::stable();
unstable_mod::deprecated(); //~ WARN use of deprecated item
unstable_mod::deprecated(); //~ WARN use of deprecated item 'inheritance::inherited_stability::unstable_mod::deprecated': text
unstable_mod::unstable();
let _ = Unstable::UnstableVariant;
@ -330,23 +331,23 @@ mod this_crate {
type Foo = MethodTester;
let foo = MethodTester;
deprecated(); //~ WARN use of deprecated item
foo.method_deprecated(); //~ WARN use of deprecated item
Foo::method_deprecated(&foo); //~ WARN use of deprecated item
<Foo>::method_deprecated(&foo); //~ WARN use of deprecated item
foo.trait_deprecated(); //~ WARN use of deprecated item
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item
deprecated(); //~ WARN use of deprecated item 'this_crate::deprecated'
foo.method_deprecated(); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated'
Foo::method_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated'
<Foo>::method_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated'
foo.trait_deprecated(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
deprecated_text(); //~ WARN use of deprecated item: text
foo.method_deprecated_text(); //~ WARN use of deprecated item: text
Foo::method_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo>::method_deprecated_text(&foo); //~ WARN use of deprecated item: text
foo.trait_deprecated_text(); //~ WARN use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
deprecated_text(); //~ WARN use of deprecated item 'this_crate::deprecated_text': text
foo.method_deprecated_text(); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text
Foo::method_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text
<Foo>::method_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::MethodTester::method_deprecated_text': text
foo.trait_deprecated_text(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
unstable();
foo.method_unstable();
@ -385,34 +386,34 @@ mod this_crate {
<Foo as Trait>::trait_stable_text(&foo);
let _ = DeprecatedStruct {
//~^ WARN use of deprecated item
i: 0 //~ WARN use of deprecated item
//~^ WARN use of deprecated item 'this_crate::DeprecatedStruct'
i: 0 //~ WARN use of deprecated item 'this_crate::DeprecatedStruct::i'
};
let _ = UnstableStruct { i: 0 };
let _ = StableStruct { i: 0 };
let _ = DeprecatedUnitStruct; //~ WARN use of deprecated item
let _ = DeprecatedUnitStruct; //~ WARN use of deprecated item 'this_crate::DeprecatedUnitStruct'
let _ = UnstableUnitStruct;
let _ = StableUnitStruct;
let _ = Enum::DeprecatedVariant; //~ WARN use of deprecated item
let _ = Enum::DeprecatedVariant; //~ WARN use of deprecated item 'this_crate::Enum::DeprecatedVariant'
let _ = Enum::UnstableVariant;
let _ = Enum::StableVariant;
let _ = DeprecatedTupleStruct (1); //~ WARN use of deprecated item
let _ = DeprecatedTupleStruct (1); //~ WARN use of deprecated item 'this_crate::DeprecatedTupleStruct'
let _ = UnstableTupleStruct (1);
let _ = StableTupleStruct (1);
}
fn test_method_param<Foo: Trait>(foo: Foo) {
foo.trait_deprecated(); //~ WARN use of deprecated item
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item
foo.trait_deprecated_text(); //~ WARN use of deprecated item: text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item: text
foo.trait_deprecated(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
Trait::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
<Foo as Trait>::trait_deprecated(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
Trait::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
<Foo as Trait>::trait_deprecated_text(&foo); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
foo.trait_unstable();
Trait::trait_unstable(&foo);
<Foo>::trait_unstable(&foo);
@ -428,8 +429,8 @@ mod this_crate {
}
fn test_method_object(foo: &Trait) {
foo.trait_deprecated(); //~ WARN use of deprecated item
foo.trait_deprecated_text(); //~ WARN use of deprecated item: text
foo.trait_deprecated(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated'
foo.trait_deprecated_text(); //~ WARN use of deprecated item 'this_crate::Trait::trait_deprecated_text': text
foo.trait_unstable();
foo.trait_unstable_text();
foo.trait_stable();
@ -439,7 +440,7 @@ mod this_crate {
#[rustc_deprecated(since = "1.0.0", reason = "text")]
fn test_fn_body() {
fn fn_in_body() {}
fn_in_body(); //~ WARN use of deprecated item: text
fn_in_body(); //~ WARN use of deprecated item 'this_crate::test_fn_body::fn_in_body': text
}
impl MethodTester {
@ -447,7 +448,7 @@ mod this_crate {
#[rustc_deprecated(since = "1.0.0", reason = "text")]
fn test_method_body(&self) {
fn fn_in_body() {}
fn_in_body(); //~ WARN use of deprecated item: text
fn_in_body(); //~ WARN use of deprecated item 'this_crate::MethodTester::test_method_body::fn_in_body': text
}
}
@ -459,9 +460,9 @@ mod this_crate {
struct S;
impl DeprecatedTrait for S { } //~ WARN use of deprecated item
impl DeprecatedTrait for S { } //~ WARN use of deprecated item 'this_crate::DeprecatedTrait'
trait LocalTrait : DeprecatedTrait { } //~ WARN use of deprecated item
trait LocalTrait : DeprecatedTrait { } //~ WARN use of deprecated item 'this_crate::DeprecatedTrait'
}
#[rustc_error] fn main() {} //~ ERROR: compilation successful