mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 07:44:10 +00:00
[incompatible_msrv
]: allow expressions that come from desugaring
This commit is contained in:
parent
d29f2eebdd
commit
67bdb0e11c
@ -9,7 +9,7 @@ use rustc_middle::ty::TyCtxt;
|
|||||||
use rustc_semver::RustcVersion;
|
use rustc_semver::RustcVersion;
|
||||||
use rustc_session::impl_lint_pass;
|
use rustc_session::impl_lint_pass;
|
||||||
use rustc_span::def_id::DefId;
|
use rustc_span::def_id::DefId;
|
||||||
use rustc_span::Span;
|
use rustc_span::{ExpnKind, Span};
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
/// ### What it does
|
/// ### What it does
|
||||||
@ -91,6 +91,11 @@ impl IncompatibleMsrv {
|
|||||||
if self.msrv.meets(version) || is_in_test_function(cx.tcx, node) {
|
if self.msrv.meets(version) || is_in_test_function(cx.tcx, node) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if let ExpnKind::AstPass(_) | ExpnKind::Desugaring(_) = span.ctxt().outer_expn_data().kind {
|
||||||
|
// Desugared expressions get to cheat and stability is ignored.
|
||||||
|
// Intentionally not using `.from_expansion()`, since we do still care about macro expansions
|
||||||
|
return;
|
||||||
|
}
|
||||||
self.emit_lint_for(cx, span, version);
|
self.emit_lint_for(cx, span, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
use std::collections::hash_map::Entry;
|
use std::collections::hash_map::Entry;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
use std::future::Future;
|
||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
@ -25,4 +26,11 @@ fn test() {
|
|||||||
sleep(Duration::new(1, 0));
|
sleep(Duration::new(1, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[clippy::msrv = "1.63.0"]
|
||||||
|
async fn issue12273(v: impl Future<Output = ()>) {
|
||||||
|
// `.await` desugaring has a call to `IntoFuture::into_future` marked #[stable(since = "1.64.0")],
|
||||||
|
// but its stability is ignored
|
||||||
|
v.await;
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
error: current MSRV (Minimum Supported Rust Version) is `1.3.0` but this item is stable since `1.10.0`
|
error: current MSRV (Minimum Supported Rust Version) is `1.3.0` but this item is stable since `1.10.0`
|
||||||
--> $DIR/incompatible_msrv.rs:12:39
|
--> $DIR/incompatible_msrv.rs:13:39
|
||||||
|
|
|
|
||||||
LL | assert_eq!(map.entry("poneyland").key(), &"poneyland");
|
LL | assert_eq!(map.entry("poneyland").key(), &"poneyland");
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
@ -8,13 +8,13 @@ LL | assert_eq!(map.entry("poneyland").key(), &"poneyland");
|
|||||||
= help: to override `-D warnings` add `#[allow(clippy::incompatible_msrv)]`
|
= help: to override `-D warnings` add `#[allow(clippy::incompatible_msrv)]`
|
||||||
|
|
||||||
error: current MSRV (Minimum Supported Rust Version) is `1.3.0` but this item is stable since `1.12.0`
|
error: current MSRV (Minimum Supported Rust Version) is `1.3.0` but this item is stable since `1.12.0`
|
||||||
--> $DIR/incompatible_msrv.rs:15:11
|
--> $DIR/incompatible_msrv.rs:16:11
|
||||||
|
|
|
|
||||||
LL | v.into_key();
|
LL | v.into_key();
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error: current MSRV (Minimum Supported Rust Version) is `1.3.0` but this item is stable since `1.4.0`
|
error: current MSRV (Minimum Supported Rust Version) is `1.3.0` but this item is stable since `1.4.0`
|
||||||
--> $DIR/incompatible_msrv.rs:19:5
|
--> $DIR/incompatible_msrv.rs:20:5
|
||||||
|
|
|
|
||||||
LL | sleep(Duration::new(1, 0));
|
LL | sleep(Duration::new(1, 0));
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
Loading…
Reference in New Issue
Block a user