Skip to content

Commit e01a720

Browse files
authoredJun 25, 2021
Rollup merge of #86330 - rylev:update-fcw-handling, r=nikomatsakis
Change how edition based future compatibility warnings are handled This fixes #85894 by updating how future compatibility lints work. This makes it more apparent that future compatibility warnings can happen for several different reasons. For now `FutureCompatibilityReasons` are limited to three reasons, but we can easily add more. This also updates the generated warning for FCW's that signal code that will error in a future edition. This makes the diagnostics between FCWs at edition boundaries more distinct from those not happening at an edition boundary. r? ``@m-ou-se``
2 parents 4733f32 + 51f223e commit e01a720

File tree

114 files changed

+476
-639
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+476
-639
lines changed
 

‎compiler/rustc_lint/src/array_into_iter.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ use rustc_errors::Applicability;
33
use rustc_hir as hir;
44
use rustc_middle::ty;
55
use rustc_middle::ty::adjustment::{Adjust, Adjustment};
6-
use rustc_session::lint::FutureBreakage;
6+
use rustc_session::lint::FutureIncompatibilityReason;
7+
use rustc_span::edition::Edition;
78
use rustc_span::symbol::sym;
89

910
declare_lint! {
@@ -37,10 +38,7 @@ declare_lint! {
3738
"detects calling `into_iter` on arrays",
3839
@future_incompatible = FutureIncompatibleInfo {
3940
reference: "issue #66145 <https://github.com/rust-lang/rust/issues/66145>",
40-
edition: None,
41-
future_breakage: Some(FutureBreakage {
42-
date: None
43-
})
41+
reason: FutureIncompatibilityReason::EditionSemanticsChange(Edition::Edition2021),
4442
};
4543
}
4644

‎compiler/rustc_lint/src/builtin.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ use rustc_middle::ty::print::with_no_trimmed_paths;
4747
use rustc_middle::ty::subst::{GenericArgKind, Subst};
4848
use rustc_middle::ty::Instance;
4949
use rustc_middle::ty::{self, layout::LayoutError, Ty, TyCtxt};
50+
use rustc_session::lint::FutureIncompatibilityReason;
5051
use rustc_session::Session;
5152
use rustc_span::edition::Edition;
5253
use rustc_span::source_map::Spanned;
@@ -874,7 +875,7 @@ declare_lint! {
874875
"detects anonymous parameters",
875876
@future_incompatible = FutureIncompatibleInfo {
876877
reference: "issue #41686 <https://github.com/rust-lang/rust/issues/41686>",
877-
edition: Some(Edition::Edition2018),
878+
reason: FutureIncompatibilityReason::EditionError(Edition::Edition2018),
878879
};
879880
}
880881

@@ -1663,7 +1664,7 @@ declare_lint! {
16631664
"`...` range patterns are deprecated",
16641665
@future_incompatible = FutureIncompatibleInfo {
16651666
reference: "issue #80165 <https://github.com/rust-lang/rust/issues/80165>",
1666-
edition: Some(Edition::Edition2021),
1667+
reason: FutureIncompatibilityReason::EditionError(Edition::Edition2021),
16671668
};
16681669
}
16691670

@@ -1891,7 +1892,7 @@ declare_lint! {
18911892
"detects edition keywords being used as an identifier",
18921893
@future_incompatible = FutureIncompatibleInfo {
18931894
reference: "issue #49716 <https://github.com/rust-lang/rust/issues/49716>",
1894-
edition: Some(Edition::Edition2018),
1895+
reason: FutureIncompatibilityReason::EditionError(Edition::Edition2018),
18951896
};
18961897
}
18971898

0 commit comments

Comments
 (0)