Stop using hir_ty_to_ty
in rustc_privacy
This commit is contained in:
parent
b998b515e9
commit
4389a1cc42
32 changed files with 191 additions and 565 deletions
|
@ -4374,6 +4374,7 @@ dependencies = [
|
||||||
"rustc_middle",
|
"rustc_middle",
|
||||||
"rustc_session",
|
"rustc_session",
|
||||||
"rustc_span",
|
"rustc_span",
|
||||||
|
"rustc_ty_utils",
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -16,5 +16,6 @@ rustc_macros = { path = "../rustc_macros" }
|
||||||
rustc_middle = { path = "../rustc_middle" }
|
rustc_middle = { path = "../rustc_middle" }
|
||||||
rustc_session = { path = "../rustc_session" }
|
rustc_session = { path = "../rustc_session" }
|
||||||
rustc_span = { path = "../rustc_span" }
|
rustc_span = { path = "../rustc_span" }
|
||||||
|
rustc_ty_utils = { path = "../rustc_ty_utils" }
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
# tidy-alphabetical-end
|
# tidy-alphabetical-end
|
||||||
|
|
|
@ -21,7 +21,7 @@ use rustc_hir as hir;
|
||||||
use rustc_hir::def::{DefKind, Res};
|
use rustc_hir::def::{DefKind, Res};
|
||||||
use rustc_hir::def_id::{DefId, LocalDefId, LocalModDefId, CRATE_DEF_ID};
|
use rustc_hir::def_id::{DefId, LocalDefId, LocalModDefId, CRATE_DEF_ID};
|
||||||
use rustc_hir::intravisit::{self, Visitor};
|
use rustc_hir::intravisit::{self, Visitor};
|
||||||
use rustc_hir::{AssocItemKind, ForeignItemKind, ItemId, PatKind};
|
use rustc_hir::{AssocItemKind, ForeignItemKind, ItemId, ItemKind, PatKind};
|
||||||
use rustc_middle::middle::privacy::{EffectiveVisibilities, EffectiveVisibility, Level};
|
use rustc_middle::middle::privacy::{EffectiveVisibilities, EffectiveVisibility, Level};
|
||||||
use rustc_middle::query::Providers;
|
use rustc_middle::query::Providers;
|
||||||
use rustc_middle::ty::GenericArgs;
|
use rustc_middle::ty::GenericArgs;
|
||||||
|
@ -173,6 +173,10 @@ where
|
||||||
{
|
{
|
||||||
type BreakTy = V::BreakTy;
|
type BreakTy = V::BreakTy;
|
||||||
|
|
||||||
|
fn visit_predicate(&mut self, p: ty::Predicate<'tcx>) -> ControlFlow<Self::BreakTy> {
|
||||||
|
self.visit_clause(p.as_clause().unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
fn visit_ty(&mut self, ty: Ty<'tcx>) -> ControlFlow<V::BreakTy> {
|
fn visit_ty(&mut self, ty: Ty<'tcx>) -> ControlFlow<V::BreakTy> {
|
||||||
let tcx = self.def_id_visitor.tcx();
|
let tcx = self.def_id_visitor.tcx();
|
||||||
// GenericArgs are not visited here because they are visited below
|
// GenericArgs are not visited here because they are visited below
|
||||||
|
@ -1076,6 +1080,14 @@ impl<'tcx> TypePrivacyVisitor<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'tcx> rustc_ty_utils::sig_types::SpannedTypeVisitor<'tcx> for TypePrivacyVisitor<'tcx> {
|
||||||
|
type BreakTy = ();
|
||||||
|
fn visit(&mut self, span: Span, value: impl TypeVisitable<TyCtxt<'tcx>>) -> ControlFlow<()> {
|
||||||
|
self.span = span;
|
||||||
|
value.visit_with(&mut self.skeleton())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'tcx> Visitor<'tcx> for TypePrivacyVisitor<'tcx> {
|
impl<'tcx> Visitor<'tcx> for TypePrivacyVisitor<'tcx> {
|
||||||
fn visit_nested_body(&mut self, body_id: hir::BodyId) {
|
fn visit_nested_body(&mut self, body_id: hir::BodyId) {
|
||||||
let old_maybe_typeck_results =
|
let old_maybe_typeck_results =
|
||||||
|
@ -1086,18 +1098,15 @@ impl<'tcx> Visitor<'tcx> for TypePrivacyVisitor<'tcx> {
|
||||||
|
|
||||||
fn visit_ty(&mut self, hir_ty: &'tcx hir::Ty<'tcx>) {
|
fn visit_ty(&mut self, hir_ty: &'tcx hir::Ty<'tcx>) {
|
||||||
self.span = hir_ty.span;
|
self.span = hir_ty.span;
|
||||||
if let Some(typeck_results) = self.maybe_typeck_results {
|
if self
|
||||||
// Types in bodies.
|
.visit(
|
||||||
if self.visit(typeck_results.node_type(hir_ty.hir_id)).is_break() {
|
self.maybe_typeck_results
|
||||||
return;
|
.unwrap_or_else(|| span_bug!(hir_ty.span, "`hir::Ty` outside of a body"))
|
||||||
}
|
.node_type(hir_ty.hir_id),
|
||||||
} else {
|
)
|
||||||
// Types in signatures.
|
.is_break()
|
||||||
// FIXME: This is very ineffective. Ideally each HIR type should be converted
|
{
|
||||||
// into a semantic type only once and the result should be cached somehow.
|
return;
|
||||||
if self.visit(rustc_hir_analysis::hir_ty_to_ty(self.tcx, hir_ty)).is_break() {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
intravisit::walk_ty(self, hir_ty);
|
intravisit::walk_ty(self, hir_ty);
|
||||||
|
@ -1105,52 +1114,23 @@ impl<'tcx> Visitor<'tcx> for TypePrivacyVisitor<'tcx> {
|
||||||
|
|
||||||
fn visit_infer(&mut self, inf: &'tcx hir::InferArg) {
|
fn visit_infer(&mut self, inf: &'tcx hir::InferArg) {
|
||||||
self.span = inf.span;
|
self.span = inf.span;
|
||||||
if let Some(typeck_results) = self.maybe_typeck_results {
|
if let Some(ty) = self
|
||||||
if let Some(ty) = typeck_results.node_type_opt(inf.hir_id) {
|
.maybe_typeck_results
|
||||||
if self.visit(ty).is_break() {
|
.unwrap_or_else(|| span_bug!(inf.span, "`hir::InferArg` outside of a body"))
|
||||||
return;
|
.node_type_opt(inf.hir_id)
|
||||||
}
|
{
|
||||||
} else {
|
if self.visit(ty).is_break() {
|
||||||
// FIXME: check types of const infers here.
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
span_bug!(self.span, "`hir::InferArg` outside of a body");
|
// FIXME: check types of const infers here.
|
||||||
}
|
}
|
||||||
intravisit::walk_inf(self, inf);
|
intravisit::walk_inf(self, inf);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn visit_trait_ref(&mut self, trait_ref: &'tcx hir::TraitRef<'tcx>) {
|
fn visit_trait_ref(&mut self, trait_ref: &'tcx hir::TraitRef<'tcx>) {
|
||||||
self.span = trait_ref.path.span;
|
self.span = trait_ref.path.span;
|
||||||
if self.maybe_typeck_results.is_some() {
|
// Privacy of traits in bodies is checked as a part of trait object types.
|
||||||
// Privacy of traits in bodies is checked as a part of trait object types.
|
|
||||||
} else {
|
|
||||||
let bounds = rustc_hir_analysis::hir_trait_to_predicates(
|
|
||||||
self.tcx,
|
|
||||||
trait_ref,
|
|
||||||
// NOTE: This isn't really right, but the actual type doesn't matter here. It's
|
|
||||||
// just required by `ty::TraitRef`.
|
|
||||||
self.tcx.types.never,
|
|
||||||
);
|
|
||||||
|
|
||||||
for (clause, _) in bounds.clauses() {
|
|
||||||
match clause.kind().skip_binder() {
|
|
||||||
ty::ClauseKind::Trait(trait_predicate) => {
|
|
||||||
if self.visit_trait(trait_predicate.trait_ref).is_break() {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ty::ClauseKind::Projection(proj_predicate) => {
|
|
||||||
let term = self.visit(proj_predicate.term);
|
|
||||||
if term.is_break()
|
|
||||||
|| self.visit_projection_ty(proj_predicate.projection_ty).is_break()
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
intravisit::walk_trait_ref(self, trait_ref);
|
intravisit::walk_trait_ref(self, trait_ref);
|
||||||
}
|
}
|
||||||
|
@ -1727,7 +1707,26 @@ fn check_mod_privacy(tcx: TyCtxt<'_>, module_def_id: LocalModDefId) {
|
||||||
// inferred types of expressions and patterns.
|
// inferred types of expressions and patterns.
|
||||||
let span = tcx.def_span(module_def_id);
|
let span = tcx.def_span(module_def_id);
|
||||||
let mut visitor = TypePrivacyVisitor { tcx, module_def_id, maybe_typeck_results: None, span };
|
let mut visitor = TypePrivacyVisitor { tcx, module_def_id, maybe_typeck_results: None, span };
|
||||||
tcx.hir().visit_item_likes_in_module(module_def_id, &mut visitor);
|
|
||||||
|
let module = tcx.hir_module_items(module_def_id);
|
||||||
|
for def_id in module.definitions() {
|
||||||
|
rustc_ty_utils::sig_types::walk_types(tcx, def_id, &mut visitor);
|
||||||
|
|
||||||
|
if let Some(body_id) = tcx.hir().maybe_body_owned_by(def_id) {
|
||||||
|
visitor.visit_nested_body(body_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for id in module.items() {
|
||||||
|
if let ItemKind::Impl(i) = tcx.hir().item(id).kind {
|
||||||
|
if let Some(item) = i.of_trait {
|
||||||
|
let trait_ref = tcx.impl_trait_ref(id.owner_id.def_id).unwrap();
|
||||||
|
let trait_ref = trait_ref.instantiate_identity();
|
||||||
|
visitor.span = item.path.span;
|
||||||
|
visitor.visit_def_id(trait_ref.def_id, "trait", &trait_ref.print_only_trait_path());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn effective_visibilities(tcx: TyCtxt<'_>, (): ()) -> &EffectiveVisibilities {
|
fn effective_visibilities(tcx: TyCtxt<'_>, (): ()) -> &EffectiveVisibilities {
|
||||||
|
|
|
@ -37,7 +37,7 @@ mod layout_sanity_check;
|
||||||
mod needs_drop;
|
mod needs_drop;
|
||||||
mod opaque_types;
|
mod opaque_types;
|
||||||
mod representability;
|
mod representability;
|
||||||
mod sig_types;
|
pub mod sig_types;
|
||||||
mod structural_match;
|
mod structural_match;
|
||||||
mod ty;
|
mod ty;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ use rustc_middle::ty::{self, TyCtxt};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_type_ir::visit::TypeVisitable;
|
use rustc_type_ir::visit::TypeVisitable;
|
||||||
|
|
||||||
pub(crate) trait SpannedTypeVisitor<'tcx> {
|
pub trait SpannedTypeVisitor<'tcx> {
|
||||||
type BreakTy = !;
|
type BreakTy = !;
|
||||||
fn visit(
|
fn visit(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
@ -17,7 +17,7 @@ pub(crate) trait SpannedTypeVisitor<'tcx> {
|
||||||
) -> ControlFlow<Self::BreakTy>;
|
) -> ControlFlow<Self::BreakTy>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn walk_types<'tcx, V: SpannedTypeVisitor<'tcx>>(
|
pub fn walk_types<'tcx, V: SpannedTypeVisitor<'tcx>>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
item: LocalDefId,
|
item: LocalDefId,
|
||||||
visitor: &mut V,
|
visitor: &mut V,
|
||||||
|
|
|
@ -6,14 +6,6 @@ fn function(x: &SomeTrait, y: Box<SomeTrait>) {
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated
|
//~| ERROR trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
let _x: &SomeTrait = todo!();
|
let _x: &SomeTrait = todo!();
|
||||||
//~^ ERROR trait objects without an explicit `dyn` are deprecated
|
//~^ ERROR trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
|
|
|
@ -30,7 +30,7 @@ LL | fn function(x: &SomeTrait, y: Box<dyn SomeTrait>) {
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
error: trait objects without an explicit `dyn` are deprecated
|
||||||
--> $DIR/dyn-2018-edition-lint.rs:17:14
|
--> $DIR/dyn-2018-edition-lint.rs:9:14
|
||||||
|
|
|
|
||||||
LL | let _x: &SomeTrait = todo!();
|
LL | let _x: &SomeTrait = todo!();
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
@ -42,61 +42,5 @@ help: use `dyn`
|
||||||
LL | let _x: &dyn SomeTrait = todo!();
|
LL | let _x: &dyn SomeTrait = todo!();
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
error: aborting due to 3 previous errors
|
||||||
--> $DIR/dyn-2018-edition-lint.rs:4:17
|
|
||||||
|
|
|
||||||
LL | fn function(x: &SomeTrait, y: Box<SomeTrait>) {
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | fn function(x: &dyn SomeTrait, y: Box<SomeTrait>) {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/dyn-2018-edition-lint.rs:4:17
|
|
||||||
|
|
|
||||||
LL | fn function(x: &SomeTrait, y: Box<SomeTrait>) {
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | fn function(x: &dyn SomeTrait, y: Box<SomeTrait>) {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/dyn-2018-edition-lint.rs:4:35
|
|
||||||
|
|
|
||||||
LL | fn function(x: &SomeTrait, y: Box<SomeTrait>) {
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | fn function(x: &SomeTrait, y: Box<dyn SomeTrait>) {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/dyn-2018-edition-lint.rs:4:35
|
|
||||||
|
|
|
||||||
LL | fn function(x: &SomeTrait, y: Box<SomeTrait>) {
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | fn function(x: &SomeTrait, y: Box<dyn SomeTrait>) {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: aborting due to 7 previous errors
|
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,6 @@
|
||||||
|
|
||||||
fn ice() -> impl AsRef<Fn(&())> {
|
fn ice() -> impl AsRef<Fn(&())> {
|
||||||
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
//~| WARN this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
//~| WARN this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
//~| WARN this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
||||||
Foo
|
Foo
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,33 +12,5 @@ help: use `dyn`
|
||||||
LL | fn ice() -> impl AsRef<dyn Fn(&())> {
|
LL | fn ice() -> impl AsRef<dyn Fn(&())> {
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
warning: 1 warning emitted
|
||||||
--> $DIR/fresh-lifetime-from-bare-trait-obj-114664.rs:5:24
|
|
||||||
|
|
|
||||||
LL | fn ice() -> impl AsRef<Fn(&())> {
|
|
||||||
| ^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | fn ice() -> impl AsRef<dyn Fn(&())> {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/fresh-lifetime-from-bare-trait-obj-114664.rs:5:24
|
|
||||||
|
|
|
||||||
LL | fn ice() -> impl AsRef<Fn(&())> {
|
|
||||||
| ^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | fn ice() -> impl AsRef<dyn Fn(&())> {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: 3 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,5 @@ pub trait SomeTrait {}
|
||||||
pub fn function(_x: Box<SomeTrait>) {}
|
pub fn function(_x: Box<SomeTrait>) {}
|
||||||
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -12,33 +12,5 @@ help: use `dyn`
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
warning: 1 warning emitted
|
||||||
--> $DIR/allowed-group-warn-by-default-lint.rs:10:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/allowed-group-warn-by-default-lint.rs:10:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: 3 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,5 @@ pub trait SomeTrait {}
|
||||||
pub fn function(_x: Box<SomeTrait>) {}
|
pub fn function(_x: Box<SomeTrait>) {}
|
||||||
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -12,33 +12,5 @@ help: use `dyn`
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
warning: 1 warning emitted
|
||||||
--> $DIR/cap-lints-allow.rs:8:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/cap-lints-allow.rs:8:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: 3 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,5 @@ pub trait SomeTrait {}
|
||||||
pub fn function(_x: Box<SomeTrait>) {}
|
pub fn function(_x: Box<SomeTrait>) {}
|
||||||
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -13,33 +13,5 @@ help: use `dyn`
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
warning: 1 warning emitted
|
||||||
--> $DIR/lint-group-allowed-cli-warn-by-default-lint.rs:8:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/lint-group-allowed-cli-warn-by-default-lint.rs:8:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: 3 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,5 @@ pub trait SomeTrait {}
|
||||||
pub fn function(_x: Box<SomeTrait>) {}
|
pub fn function(_x: Box<SomeTrait>) {}
|
||||||
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -13,33 +13,5 @@ help: use `dyn`
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
warning: 1 warning emitted
|
||||||
--> $DIR/lint-group-allowed-lint-group.rs:10:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/lint-group-allowed-lint-group.rs:10:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: 3 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,5 @@ pub trait SomeTrait {}
|
||||||
pub fn function(_x: Box<SomeTrait>) {}
|
pub fn function(_x: Box<SomeTrait>) {}
|
||||||
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
//~^ WARN trait objects without an explicit `dyn` are deprecated
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -13,33 +13,5 @@ help: use `dyn`
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
warning: 1 warning emitted
|
||||||
--> $DIR/lint-group-allowed-warn-by-default-lint.rs:10:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/lint-group-allowed-warn-by-default-lint.rs:10:25
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<SomeTrait>) {}
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | pub fn function(_x: Box<dyn SomeTrait>) {}
|
|
||||||
| +++
|
|
||||||
|
|
||||||
warning: 3 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -96,13 +96,10 @@ mod cross_crate {
|
||||||
struct S1<T: TraitWithAssociatedTypes>(T::TypeUnstable);
|
struct S1<T: TraitWithAssociatedTypes>(T::TypeUnstable);
|
||||||
struct S2<T: TraitWithAssociatedTypes>(T::TypeDeprecated);
|
struct S2<T: TraitWithAssociatedTypes>(T::TypeDeprecated);
|
||||||
//~^ WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
//~^ WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
||||||
//~| WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
|
||||||
type A = dyn TraitWithAssociatedTypes<
|
type A = dyn TraitWithAssociatedTypes<
|
||||||
TypeUnstable = u8,
|
TypeUnstable = u8,
|
||||||
TypeDeprecated = u16,
|
TypeDeprecated = u16,
|
||||||
//~^ 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`
|
|
||||||
//~| WARN use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`
|
|
||||||
>;
|
>;
|
||||||
|
|
||||||
let _ = DeprecatedStruct { //~ WARN use of deprecated struct `lint_stability::DeprecatedStruct`
|
let _ = DeprecatedStruct { //~ WARN use of deprecated struct `lint_stability::DeprecatedStruct`
|
||||||
|
|
|
@ -77,241 +77,241 @@ LL | ... <Foo as Trait>::trait_deprecated_unstable_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated struct `lint_stability::DeprecatedStruct`: text
|
warning: use of deprecated struct `lint_stability::DeprecatedStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:108:17
|
--> $DIR/lint-stability-deprecated.rs:105:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedStruct {
|
LL | let _ = DeprecatedStruct {
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated struct `lint_stability::DeprecatedUnstableStruct`: text
|
warning: use of deprecated struct `lint_stability::DeprecatedUnstableStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:111:17
|
--> $DIR/lint-stability-deprecated.rs:108:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedUnstableStruct {
|
LL | let _ = DeprecatedUnstableStruct {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated unit struct `lint_stability::DeprecatedUnitStruct`: text
|
warning: use of deprecated unit struct `lint_stability::DeprecatedUnitStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:118:17
|
--> $DIR/lint-stability-deprecated.rs:115:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedUnitStruct;
|
LL | let _ = DeprecatedUnitStruct;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated unit struct `lint_stability::DeprecatedUnstableUnitStruct`: text
|
warning: use of deprecated unit struct `lint_stability::DeprecatedUnstableUnitStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:119:17
|
--> $DIR/lint-stability-deprecated.rs:116:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedUnstableUnitStruct;
|
LL | let _ = DeprecatedUnstableUnitStruct;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated unit variant `lint_stability::Enum::DeprecatedVariant`: text
|
warning: use of deprecated unit variant `lint_stability::Enum::DeprecatedVariant`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:123:23
|
--> $DIR/lint-stability-deprecated.rs:120:23
|
||||||
|
|
|
|
||||||
LL | let _ = Enum::DeprecatedVariant;
|
LL | let _ = Enum::DeprecatedVariant;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated unit variant `lint_stability::Enum::DeprecatedUnstableVariant`: text
|
warning: use of deprecated unit variant `lint_stability::Enum::DeprecatedUnstableVariant`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:124:23
|
--> $DIR/lint-stability-deprecated.rs:121:23
|
||||||
|
|
|
|
||||||
LL | let _ = Enum::DeprecatedUnstableVariant;
|
LL | let _ = Enum::DeprecatedUnstableVariant;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated tuple struct `lint_stability::DeprecatedTupleStruct`: text
|
warning: use of deprecated tuple struct `lint_stability::DeprecatedTupleStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:128:17
|
--> $DIR/lint-stability-deprecated.rs:125:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedTupleStruct (1);
|
LL | let _ = DeprecatedTupleStruct (1);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated tuple struct `lint_stability::DeprecatedUnstableTupleStruct`: text
|
warning: use of deprecated tuple struct `lint_stability::DeprecatedUnstableTupleStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:129:17
|
--> $DIR/lint-stability-deprecated.rs:126:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedUnstableTupleStruct (1);
|
LL | let _ = DeprecatedUnstableTupleStruct (1);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `lint_stability::deprecated_text`: text
|
warning: use of deprecated function `lint_stability::deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:138:25
|
--> $DIR/lint-stability-deprecated.rs:135:25
|
||||||
|
|
|
|
||||||
LL | macro_test_arg!(deprecated_text());
|
LL | macro_test_arg!(deprecated_text());
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `lint_stability::deprecated_unstable_text`: text
|
warning: use of deprecated function `lint_stability::deprecated_unstable_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:139:25
|
--> $DIR/lint-stability-deprecated.rs:136:25
|
||||||
|
|
|
|
||||||
LL | macro_test_arg!(deprecated_unstable_text());
|
LL | macro_test_arg!(deprecated_unstable_text());
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `lint_stability::deprecated_text`: text
|
warning: use of deprecated function `lint_stability::deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:140:41
|
--> $DIR/lint-stability-deprecated.rs:137:41
|
||||||
|
|
|
|
||||||
LL | macro_test_arg!(macro_test_arg!(deprecated_text()));
|
LL | macro_test_arg!(macro_test_arg!(deprecated_text()));
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:145:16
|
--> $DIR/lint-stability-deprecated.rs:142:16
|
||||||
|
|
|
|
||||||
LL | Trait::trait_deprecated(&foo);
|
LL | Trait::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:147:25
|
--> $DIR/lint-stability-deprecated.rs:144:25
|
||||||
|
|
|
|
||||||
LL | <Foo as Trait>::trait_deprecated(&foo);
|
LL | <Foo as Trait>::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:149:16
|
--> $DIR/lint-stability-deprecated.rs:146:16
|
||||||
|
|
|
|
||||||
LL | Trait::trait_deprecated_text(&foo);
|
LL | Trait::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:151:25
|
--> $DIR/lint-stability-deprecated.rs:148:25
|
||||||
|
|
|
|
||||||
LL | <Foo as Trait>::trait_deprecated_text(&foo);
|
LL | <Foo as Trait>::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:153:16
|
--> $DIR/lint-stability-deprecated.rs:150:16
|
||||||
|
|
|
|
||||||
LL | Trait::trait_deprecated_unstable(&foo);
|
LL | Trait::trait_deprecated_unstable(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:155:25
|
--> $DIR/lint-stability-deprecated.rs:152:25
|
||||||
|
|
|
|
||||||
LL | ... <Foo as Trait>::trait_deprecated_unstable(&foo);
|
LL | ... <Foo as Trait>::trait_deprecated_unstable(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:157:16
|
--> $DIR/lint-stability-deprecated.rs:154:16
|
||||||
|
|
|
|
||||||
LL | ... Trait::trait_deprecated_unstable_text(&foo);
|
LL | ... Trait::trait_deprecated_unstable_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:159:25
|
--> $DIR/lint-stability-deprecated.rs:156:25
|
||||||
|
|
|
|
||||||
LL | ... <Foo as Trait>::trait_deprecated_unstable_text(&foo);
|
LL | ... <Foo as Trait>::trait_deprecated_unstable_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated trait `lint_stability::DeprecatedTrait`: text
|
warning: use of deprecated trait `lint_stability::DeprecatedTrait`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:187:10
|
--> $DIR/lint-stability-deprecated.rs:184:10
|
||||||
|
|
|
|
||||||
LL | impl DeprecatedTrait for S {}
|
LL | impl DeprecatedTrait for S {}
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated trait `lint_stability::DeprecatedTrait`: text
|
warning: use of deprecated trait `lint_stability::DeprecatedTrait`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:189:25
|
--> $DIR/lint-stability-deprecated.rs:186:25
|
||||||
|
|
|
|
||||||
LL | trait LocalTrait2 : DeprecatedTrait { }
|
LL | trait LocalTrait2 : DeprecatedTrait { }
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `inheritance::inherited_stability::unstable_mod::deprecated`: text
|
warning: use of deprecated function `inheritance::inherited_stability::unstable_mod::deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:208:23
|
--> $DIR/lint-stability-deprecated.rs:205:23
|
||||||
|
|
|
|
||||||
LL | unstable_mod::deprecated();
|
LL | unstable_mod::deprecated();
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `this_crate::deprecated`: text
|
warning: use of deprecated function `this_crate::deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:330:9
|
--> $DIR/lint-stability-deprecated.rs:327:9
|
||||||
|
|
|
|
||||||
LL | deprecated();
|
LL | deprecated();
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:335:16
|
--> $DIR/lint-stability-deprecated.rs:332:16
|
||||||
|
|
|
|
||||||
LL | Trait::trait_deprecated(&foo);
|
LL | Trait::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:337:25
|
--> $DIR/lint-stability-deprecated.rs:334:25
|
||||||
|
|
|
|
||||||
LL | <Foo as Trait>::trait_deprecated(&foo);
|
LL | <Foo as Trait>::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `this_crate::deprecated_text`: text
|
warning: use of deprecated function `this_crate::deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:339:9
|
--> $DIR/lint-stability-deprecated.rs:336:9
|
||||||
|
|
|
|
||||||
LL | deprecated_text();
|
LL | deprecated_text();
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:344:16
|
--> $DIR/lint-stability-deprecated.rs:341:16
|
||||||
|
|
|
|
||||||
LL | Trait::trait_deprecated_text(&foo);
|
LL | Trait::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:346:25
|
--> $DIR/lint-stability-deprecated.rs:343:25
|
||||||
|
|
|
|
||||||
LL | <Foo as Trait>::trait_deprecated_text(&foo);
|
LL | <Foo as Trait>::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated struct `this_crate::DeprecatedStruct`: text
|
warning: use of deprecated struct `this_crate::DeprecatedStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:384:17
|
--> $DIR/lint-stability-deprecated.rs:381:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedStruct {
|
LL | let _ = DeprecatedStruct {
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated unit struct `this_crate::DeprecatedUnitStruct`: text
|
warning: use of deprecated unit struct `this_crate::DeprecatedUnitStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:391:17
|
--> $DIR/lint-stability-deprecated.rs:388:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedUnitStruct;
|
LL | let _ = DeprecatedUnitStruct;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated unit variant `this_crate::Enum::DeprecatedVariant`: text
|
warning: use of deprecated unit variant `this_crate::Enum::DeprecatedVariant`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:395:23
|
--> $DIR/lint-stability-deprecated.rs:392:23
|
||||||
|
|
|
|
||||||
LL | let _ = Enum::DeprecatedVariant;
|
LL | let _ = Enum::DeprecatedVariant;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated tuple struct `this_crate::DeprecatedTupleStruct`: text
|
warning: use of deprecated tuple struct `this_crate::DeprecatedTupleStruct`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:399:17
|
--> $DIR/lint-stability-deprecated.rs:396:17
|
||||||
|
|
|
|
||||||
LL | let _ = DeprecatedTupleStruct (1);
|
LL | let _ = DeprecatedTupleStruct (1);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:406:16
|
--> $DIR/lint-stability-deprecated.rs:403:16
|
||||||
|
|
|
|
||||||
LL | Trait::trait_deprecated(&foo);
|
LL | Trait::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:408:25
|
--> $DIR/lint-stability-deprecated.rs:405:25
|
||||||
|
|
|
|
||||||
LL | <Foo as Trait>::trait_deprecated(&foo);
|
LL | <Foo as Trait>::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:410:16
|
--> $DIR/lint-stability-deprecated.rs:407:16
|
||||||
|
|
|
|
||||||
LL | Trait::trait_deprecated_text(&foo);
|
LL | Trait::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:412:25
|
--> $DIR/lint-stability-deprecated.rs:409:25
|
||||||
|
|
|
|
||||||
LL | <Foo as Trait>::trait_deprecated_text(&foo);
|
LL | <Foo as Trait>::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `this_crate::test_fn_body::fn_in_body`: text
|
warning: use of deprecated function `this_crate::test_fn_body::fn_in_body`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:439:9
|
--> $DIR/lint-stability-deprecated.rs:436:9
|
||||||
|
|
|
|
||||||
LL | fn_in_body();
|
LL | fn_in_body();
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated trait `this_crate::DeprecatedTrait`: text
|
warning: use of deprecated trait `this_crate::DeprecatedTrait`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:459:10
|
--> $DIR/lint-stability-deprecated.rs:456:10
|
||||||
|
|
|
|
||||||
LL | impl DeprecatedTrait for S { }
|
LL | impl DeprecatedTrait for S { }
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated trait `this_crate::DeprecatedTrait`: text
|
warning: use of deprecated trait `this_crate::DeprecatedTrait`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:461:24
|
--> $DIR/lint-stability-deprecated.rs:458:24
|
||||||
|
|
|
|
||||||
LL | trait LocalTrait : DeprecatedTrait { }
|
LL | trait LocalTrait : DeprecatedTrait { }
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated function `this_crate::MethodTester::test_method_body::fn_in_body`: text
|
warning: use of deprecated function `this_crate::MethodTester::test_method_body::fn_in_body`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:447:13
|
--> $DIR/lint-stability-deprecated.rs:444:13
|
||||||
|
|
|
|
||||||
LL | fn_in_body();
|
LL | fn_in_body();
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
@ -323,7 +323,7 @@ LL | struct S2<T: TraitWithAssociatedTypes>(T::TypeDeprecated);
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:102:13
|
--> $DIR/lint-stability-deprecated.rs:101:13
|
||||||
|
|
|
|
||||||
LL | TypeDeprecated = u16,
|
LL | TypeDeprecated = u16,
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -449,214 +449,190 @@ LL | ... <Foo>::trait_deprecated_unstable_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated field `lint_stability::DeprecatedStruct::i`: text
|
warning: use of deprecated field `lint_stability::DeprecatedStruct::i`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:109:13
|
--> $DIR/lint-stability-deprecated.rs:106:13
|
||||||
|
|
|
|
||||||
LL | i: 0
|
LL | i: 0
|
||||||
| ^^^^
|
| ^^^^
|
||||||
|
|
||||||
warning: use of deprecated field `lint_stability::DeprecatedUnstableStruct::i`: text
|
warning: use of deprecated field `lint_stability::DeprecatedUnstableStruct::i`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:113:13
|
--> $DIR/lint-stability-deprecated.rs:110:13
|
||||||
|
|
|
|
||||||
LL | i: 0
|
LL | i: 0
|
||||||
| ^^^^
|
| ^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:144:13
|
--> $DIR/lint-stability-deprecated.rs:141:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated();
|
LL | foo.trait_deprecated();
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:146:16
|
--> $DIR/lint-stability-deprecated.rs:143:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::trait_deprecated(&foo);
|
LL | <Foo>::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:148:13
|
--> $DIR/lint-stability-deprecated.rs:145:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated_text();
|
LL | foo.trait_deprecated_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:150:16
|
--> $DIR/lint-stability-deprecated.rs:147:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::trait_deprecated_text(&foo);
|
LL | <Foo>::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:152:13
|
--> $DIR/lint-stability-deprecated.rs:149:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated_unstable();
|
LL | foo.trait_deprecated_unstable();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:154:16
|
--> $DIR/lint-stability-deprecated.rs:151:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::trait_deprecated_unstable(&foo);
|
LL | <Foo>::trait_deprecated_unstable(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:156:13
|
--> $DIR/lint-stability-deprecated.rs:153:13
|
||||||
|
|
|
|
||||||
LL | ... foo.trait_deprecated_unstable_text();
|
LL | ... foo.trait_deprecated_unstable_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:158:16
|
--> $DIR/lint-stability-deprecated.rs:155:16
|
||||||
|
|
|
|
||||||
LL | ... <Foo>::trait_deprecated_unstable_text(&foo);
|
LL | ... <Foo>::trait_deprecated_unstable_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:175:13
|
--> $DIR/lint-stability-deprecated.rs:172:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated();
|
LL | foo.trait_deprecated();
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:176:13
|
--> $DIR/lint-stability-deprecated.rs:173:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated_text();
|
LL | foo.trait_deprecated_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:177:13
|
--> $DIR/lint-stability-deprecated.rs:174:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated_unstable();
|
LL | foo.trait_deprecated_unstable();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
warning: use of deprecated method `lint_stability::Trait::trait_deprecated_unstable_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:178:13
|
--> $DIR/lint-stability-deprecated.rs:175:13
|
||||||
|
|
|
|
||||||
LL | ... foo.trait_deprecated_unstable_text();
|
LL | ... foo.trait_deprecated_unstable_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::MethodTester::method_deprecated`: text
|
warning: use of deprecated method `this_crate::MethodTester::method_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:331:13
|
--> $DIR/lint-stability-deprecated.rs:328:13
|
||||||
|
|
|
|
||||||
LL | foo.method_deprecated();
|
LL | foo.method_deprecated();
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::MethodTester::method_deprecated`: text
|
warning: use of deprecated method `this_crate::MethodTester::method_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:332:14
|
--> $DIR/lint-stability-deprecated.rs:329:14
|
||||||
|
|
|
|
||||||
LL | Foo::method_deprecated(&foo);
|
LL | Foo::method_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::MethodTester::method_deprecated`: text
|
warning: use of deprecated method `this_crate::MethodTester::method_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:333:16
|
--> $DIR/lint-stability-deprecated.rs:330:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::method_deprecated(&foo);
|
LL | <Foo>::method_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:334:13
|
--> $DIR/lint-stability-deprecated.rs:331:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated();
|
LL | foo.trait_deprecated();
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:336:16
|
--> $DIR/lint-stability-deprecated.rs:333:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::trait_deprecated(&foo);
|
LL | <Foo>::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::MethodTester::method_deprecated_text`: text
|
warning: use of deprecated method `this_crate::MethodTester::method_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:340:13
|
--> $DIR/lint-stability-deprecated.rs:337:13
|
||||||
|
|
|
|
||||||
LL | foo.method_deprecated_text();
|
LL | foo.method_deprecated_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::MethodTester::method_deprecated_text`: text
|
warning: use of deprecated method `this_crate::MethodTester::method_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:341:14
|
--> $DIR/lint-stability-deprecated.rs:338:14
|
||||||
|
|
|
|
||||||
LL | Foo::method_deprecated_text(&foo);
|
LL | Foo::method_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::MethodTester::method_deprecated_text`: text
|
warning: use of deprecated method `this_crate::MethodTester::method_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:342:16
|
--> $DIR/lint-stability-deprecated.rs:339:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::method_deprecated_text(&foo);
|
LL | <Foo>::method_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:343:13
|
--> $DIR/lint-stability-deprecated.rs:340:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated_text();
|
LL | foo.trait_deprecated_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:345:16
|
--> $DIR/lint-stability-deprecated.rs:342:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::trait_deprecated_text(&foo);
|
LL | <Foo>::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated field `this_crate::DeprecatedStruct::i`: text
|
warning: use of deprecated field `this_crate::DeprecatedStruct::i`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:386:13
|
--> $DIR/lint-stability-deprecated.rs:383:13
|
||||||
|
|
|
|
||||||
LL | i: 0
|
LL | i: 0
|
||||||
| ^^^^
|
| ^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:405:13
|
--> $DIR/lint-stability-deprecated.rs:402:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated();
|
LL | foo.trait_deprecated();
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:407:16
|
--> $DIR/lint-stability-deprecated.rs:404:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::trait_deprecated(&foo);
|
LL | <Foo>::trait_deprecated(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:409:13
|
--> $DIR/lint-stability-deprecated.rs:406:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated_text();
|
LL | foo.trait_deprecated_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:411:16
|
--> $DIR/lint-stability-deprecated.rs:408:16
|
||||||
|
|
|
|
||||||
LL | <Foo>::trait_deprecated_text(&foo);
|
LL | <Foo>::trait_deprecated_text(&foo);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:428:13
|
--> $DIR/lint-stability-deprecated.rs:425:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated();
|
LL | foo.trait_deprecated();
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
warning: use of deprecated method `this_crate::Trait::trait_deprecated_text`: text
|
||||||
--> $DIR/lint-stability-deprecated.rs:429:13
|
--> $DIR/lint-stability-deprecated.rs:426:13
|
||||||
|
|
|
|
||||||
LL | foo.trait_deprecated_text();
|
LL | foo.trait_deprecated_text();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
warning: 105 warnings emitted
|
||||||
--> $DIR/lint-stability-deprecated.rs:97:48
|
|
||||||
|
|
|
||||||
LL | struct S2<T: TraitWithAssociatedTypes>(T::TypeDeprecated);
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
|
|
||||||
warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
|
||||||
--> $DIR/lint-stability-deprecated.rs:102:13
|
|
||||||
|
|
|
||||||
LL | TypeDeprecated = u16,
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
|
|
||||||
warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text
|
|
||||||
--> $DIR/lint-stability-deprecated.rs:102:13
|
|
||||||
|
|
|
||||||
LL | TypeDeprecated = u16,
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
|
|
||||||
warning: 108 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,6 @@ trait Foo {
|
||||||
|
|
||||||
fn foo(_: &dyn Foo<Bar = ()>) {}
|
fn foo(_: &dyn Foo<Bar = ()>) {}
|
||||||
//~^ WARN: unnecessary associated type bound for not object safe associated type
|
//~^ WARN: unnecessary associated type bound for not object safe associated type
|
||||||
//~| WARN: unnecessary associated type bound for not object safe associated type
|
|
||||||
//~| WARN: unnecessary associated type bound for not object safe associated type
|
|
||||||
|
|
||||||
#[allow(unused_associated_type_bounds)]
|
#[allow(unused_associated_type_bounds)]
|
||||||
fn bar(_: &dyn Foo<Bar = ()>) {}
|
fn bar(_: &dyn Foo<Bar = ()>) {}
|
||||||
|
|
|
@ -7,23 +7,5 @@ LL | fn foo(_: &dyn Foo<Bar = ()>) {}
|
||||||
= note: this associated type has a `where Self: Sized` bound. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`.
|
= note: this associated type has a `where Self: Sized` bound. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`.
|
||||||
= note: `#[warn(unused_associated_type_bounds)]` on by default
|
= note: `#[warn(unused_associated_type_bounds)]` on by default
|
||||||
|
|
||||||
warning: unnecessary associated type bound for not object safe associated type
|
warning: 1 warning emitted
|
||||||
--> $DIR/assoc_type_bounds_sized_unnecessary.rs:9:20
|
|
||||||
|
|
|
||||||
LL | fn foo(_: &dyn Foo<Bar = ()>) {}
|
|
||||||
| ^^^^^^^^ help: remove this bound
|
|
||||||
|
|
|
||||||
= note: this associated type has a `where Self: Sized` bound. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`.
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
|
|
||||||
warning: unnecessary associated type bound for not object safe associated type
|
|
||||||
--> $DIR/assoc_type_bounds_sized_unnecessary.rs:9:20
|
|
||||||
|
|
|
||||||
LL | fn foo(_: &dyn Foo<Bar = ()>) {}
|
|
||||||
| ^^^^^^^^ help: remove this bound
|
|
||||||
|
|
|
||||||
= note: this associated type has a `where Self: Sized` bound. Thus, while the associated type can be specified, it cannot be used in any way, because trait objects are not `Sized`.
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
|
|
||||||
warning: 3 warnings emitted
|
|
||||||
|
|
||||||
|
|
|
@ -75,17 +75,6 @@ LL | priv_trait::mac!();
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: trait `PrivTr` is private
|
|
||||||
--> $DIR/associated-item-privacy-trait.rs:29:14
|
|
||||||
|
|
|
||||||
LL | impl PrivTr for u8 {}
|
|
||||||
| ^^^^^^ private trait
|
|
||||||
...
|
|
||||||
LL | priv_trait::mac!();
|
|
||||||
| ------------------ in this macro invocation
|
|
||||||
|
|
|
||||||
= note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
||||||
|
|
||||||
error: type `priv_signature::Priv` is private
|
error: type `priv_signature::Priv` is private
|
||||||
--> $DIR/associated-item-privacy-trait.rs:46:21
|
--> $DIR/associated-item-privacy-trait.rs:46:21
|
||||||
|
|
|
|
||||||
|
@ -328,5 +317,16 @@ LL | priv_parent_substs::mac!();
|
||||||
|
|
|
|
||||||
= note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error: trait `PrivTr` is private
|
||||||
|
--> $DIR/associated-item-privacy-trait.rs:29:14
|
||||||
|
|
|
||||||
|
LL | impl PrivTr for u8 {}
|
||||||
|
| ^^^^^^ private trait
|
||||||
|
...
|
||||||
|
LL | priv_trait::mac!();
|
||||||
|
| ------------------ in this macro invocation
|
||||||
|
|
|
||||||
|
= note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: aborting due to 30 previous errors
|
error: aborting due to 30 previous errors
|
||||||
|
|
||||||
|
|
|
@ -32,10 +32,10 @@ LL | priv_trait::mac1!();
|
||||||
= note: this error originates in the macro `priv_trait::mac1` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `priv_trait::mac1` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: trait `PrivTr` is private
|
error: trait `PrivTr` is private
|
||||||
--> $DIR/associated-item-privacy-type-binding.rs:16:31
|
--> $DIR/associated-item-privacy-type-binding.rs:16:37
|
||||||
|
|
|
|
||||||
LL | trait InSignatureTr2: PubTr<AssocTy = u8> {}
|
LL | trait InSignatureTr2: PubTr<AssocTy = u8> {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^ private trait
|
| ^^^^^^^^^^^^ private trait
|
||||||
...
|
...
|
||||||
LL | priv_trait::mac1!();
|
LL | priv_trait::mac1!();
|
||||||
| ------------------- in this macro invocation
|
| ------------------- in this macro invocation
|
||||||
|
@ -164,10 +164,10 @@ LL | priv_parent_substs::mac!();
|
||||||
= note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: type `Priv` is private
|
error: type `Priv` is private
|
||||||
--> $DIR/associated-item-privacy-type-binding.rs:56:31
|
--> $DIR/associated-item-privacy-type-binding.rs:56:37
|
||||||
|
|
|
|
||||||
LL | trait InSignatureTr2: PubTr<AssocTy = u8> {}
|
LL | trait InSignatureTr2: PubTr<AssocTy = u8> {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^ private type
|
| ^^^^^^^^^^^^ private type
|
||||||
...
|
...
|
||||||
LL | priv_parent_substs::mac!();
|
LL | priv_parent_substs::mac!();
|
||||||
| -------------------------- in this macro invocation
|
| -------------------------- in this macro invocation
|
||||||
|
|
|
@ -47,10 +47,10 @@ LL | fn g() -> impl Tr2<m::Alias> { 0 }
|
||||||
| ^^^^^^^^^^^^^^^^^^ private type
|
| ^^^^^^^^^^^^^^^^^^ private type
|
||||||
|
|
||||||
error: type `Priv` is private
|
error: type `Priv` is private
|
||||||
--> $DIR/private-type-in-interface.rs:28:16
|
--> $DIR/private-type-in-interface.rs:28:11
|
||||||
|
|
|
|
||||||
LL | fn g() -> impl Tr2<m::Alias> { 0 }
|
LL | fn g() -> impl Tr2<m::Alias> { 0 }
|
||||||
| ^^^^^^^^^^^^^ private type
|
| ^^^^^^^^^^^^^^^^^^ private type
|
||||||
|
|
||||||
error: type `ext::Priv` is private
|
error: type `ext::Priv` is private
|
||||||
--> $DIR/private-type-in-interface.rs:30:15
|
--> $DIR/private-type-in-interface.rs:30:15
|
||||||
|
@ -59,10 +59,10 @@ LL | fn g_ext() -> impl Tr2<ext::Alias> { 0 }
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ private type
|
| ^^^^^^^^^^^^^^^^^^^^ private type
|
||||||
|
|
||||||
error: type `ext::Priv` is private
|
error: type `ext::Priv` is private
|
||||||
--> $DIR/private-type-in-interface.rs:30:20
|
--> $DIR/private-type-in-interface.rs:30:15
|
||||||
|
|
|
|
||||||
LL | fn g_ext() -> impl Tr2<ext::Alias> { 0 }
|
LL | fn g_ext() -> impl Tr2<ext::Alias> { 0 }
|
||||||
| ^^^^^^^^^^^^^^^ private type
|
| ^^^^^^^^^^^^^^^^^^^^ private type
|
||||||
|
|
||||||
error: aborting due to 11 previous errors
|
error: aborting due to 11 previous errors
|
||||||
|
|
||||||
|
|
10
tests/ui/privacy/struct-field-type.rs
Normal file
10
tests/ui/privacy/struct-field-type.rs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
mod m {
|
||||||
|
struct Priv;
|
||||||
|
pub type Leak = Priv; //~ WARN: `Priv` is more private than the item `Leak`
|
||||||
|
}
|
||||||
|
|
||||||
|
struct S {
|
||||||
|
field: m::Leak, //~ ERROR: `Priv` is private
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
21
tests/ui/privacy/struct-field-type.stderr
Normal file
21
tests/ui/privacy/struct-field-type.stderr
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
warning: type `Priv` is more private than the item `Leak`
|
||||||
|
--> $DIR/struct-field-type.rs:3:5
|
||||||
|
|
|
||||||
|
LL | pub type Leak = Priv;
|
||||||
|
| ^^^^^^^^^^^^^ type alias `Leak` is reachable at visibility `pub(crate)`
|
||||||
|
|
|
||||||
|
note: but type `Priv` is only usable at visibility `pub(self)`
|
||||||
|
--> $DIR/struct-field-type.rs:2:5
|
||||||
|
|
|
||||||
|
LL | struct Priv;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
= note: `#[warn(private_interfaces)]` on by default
|
||||||
|
|
||||||
|
error: type `Priv` is private
|
||||||
|
--> $DIR/struct-field-type.rs:7:5
|
||||||
|
|
|
||||||
|
LL | field: m::Leak,
|
||||||
|
| ^^^^^ private type
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error; 1 warning emitted
|
||||||
|
|
|
@ -18,20 +18,10 @@ pub struct Qux<T>(T);
|
||||||
pub struct Foo {
|
pub struct Foo {
|
||||||
//~^ ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
//~^ ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
qux: Qux<Qux<Baz>>,
|
qux: Qux<Qux<Baz>>,
|
||||||
bar: Box<Bar>,
|
bar: Box<Bar>,
|
||||||
//~^ ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
//~^ ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
||||||
//~| WARN this is accepted in the current edition
|
//~| WARN this is accepted in the current edition
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
//~| ERROR trait objects without an explicit `dyn` are deprecated [bare_trait_objects]
|
|
||||||
//~| WARN this is accepted in the current edition
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
error: trait objects without an explicit `dyn` are deprecated
|
||||||
--> $DIR/issue-61963.rs:28:14
|
--> $DIR/issue-61963.rs:22:14
|
||||||
|
|
|
|
||||||
LL | bar: Box<Bar>,
|
LL | bar: Box<Bar>,
|
||||||
| ^^^
|
| ^^^
|
||||||
|
@ -29,75 +29,5 @@ help: use `dyn`
|
||||||
LL | dyn pub struct Foo {
|
LL | dyn pub struct Foo {
|
||||||
| +++
|
| +++
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
error: aborting due to 2 previous errors
|
||||||
--> $DIR/issue-61963.rs:28:14
|
|
||||||
|
|
|
||||||
LL | bar: Box<Bar>,
|
|
||||||
| ^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | bar: Box<dyn Bar>,
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/issue-61963.rs:28:14
|
|
||||||
|
|
|
||||||
LL | bar: Box<Bar>,
|
|
||||||
| ^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | bar: Box<dyn Bar>,
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/issue-61963.rs:18:1
|
|
||||||
|
|
|
||||||
LL | pub struct Foo {
|
|
||||||
| ^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | dyn pub struct Foo {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/issue-61963.rs:18:1
|
|
||||||
|
|
|
||||||
LL | pub struct Foo {
|
|
||||||
| ^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | dyn pub struct Foo {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: trait objects without an explicit `dyn` are deprecated
|
|
||||||
--> $DIR/issue-61963.rs:18:1
|
|
||||||
|
|
|
||||||
LL | pub struct Foo {
|
|
||||||
| ^^^
|
|
||||||
|
|
|
||||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
||||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
help: use `dyn`
|
|
||||||
|
|
|
||||||
LL | dyn pub struct Foo {
|
|
||||||
| +++
|
|
||||||
|
|
||||||
error: aborting due to 7 previous errors
|
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,7 @@ impl Tr for E {
|
||||||
type V = u8;
|
type V = u8;
|
||||||
fn f() -> Self::V { 0 }
|
fn f() -> Self::V { 0 }
|
||||||
//~^ ERROR ambiguous associated item
|
//~^ ERROR ambiguous associated item
|
||||||
//~| ERROR ambiguous associated item
|
|
||||||
//~| WARN this was previously accepted
|
//~| WARN this was previously accepted
|
||||||
//~| WARN this was previously accepted
|
|
||||||
//~| HELP use fully-qualified syntax
|
|
||||||
//~| HELP use fully-qualified syntax
|
//~| HELP use fully-qualified syntax
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,25 +18,5 @@ LL | type V;
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
= note: `#[deny(ambiguous_associated_items)]` on by default
|
= note: `#[deny(ambiguous_associated_items)]` on by default
|
||||||
|
|
||||||
error: ambiguous associated item
|
error: aborting due to 1 previous error
|
||||||
--> $DIR/enum-variant-priority-lint-ambiguous_associated_items.rs:32:15
|
|
||||||
|
|
|
||||||
LL | fn f() -> Self::V { 0 }
|
|
||||||
| ^^^^^^^ help: use fully-qualified syntax: `<E as Tr>::V`
|
|
||||||
|
|
|
||||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
|
||||||
= note: for more information, see issue #57644 <https://github.com/rust-lang/rust/issues/57644>
|
|
||||||
note: `V` could refer to the variant defined here
|
|
||||||
--> $DIR/enum-variant-priority-lint-ambiguous_associated_items.rs:22:5
|
|
||||||
|
|
|
||||||
LL | V
|
|
||||||
| ^
|
|
||||||
note: `V` could also refer to the associated type defined here
|
|
||||||
--> $DIR/enum-variant-priority-lint-ambiguous_associated_items.rs:26:5
|
|
||||||
|
|
|
||||||
LL | type V;
|
|
||||||
| ^^^^^^
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue