Swap Msrv from Vec to SmallVec
This commit is contained in:
parent
31f6679e78
commit
d0b15f157c
@ -20,6 +20,7 @@
|
|||||||
extern crate rustc_errors;
|
extern crate rustc_errors;
|
||||||
extern crate rustc_session;
|
extern crate rustc_session;
|
||||||
extern crate rustc_span;
|
extern crate rustc_span;
|
||||||
|
extern crate smallvec;
|
||||||
|
|
||||||
mod conf;
|
mod conf;
|
||||||
mod metadata;
|
mod metadata;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
use rustc_session::{RustcVersion, Session};
|
use rustc_session::{RustcVersion, Session};
|
||||||
use rustc_span::{Symbol, sym};
|
use rustc_span::{Symbol, sym};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
use smallvec::{SmallVec, smallvec};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
macro_rules! msrv_aliases {
|
macro_rules! msrv_aliases {
|
||||||
@ -67,7 +68,7 @@ macro_rules! msrv_aliases {
|
|||||||
/// Tracks the current MSRV from `clippy.toml`, `Cargo.toml` or set via `#[clippy::msrv]`
|
/// Tracks the current MSRV from `clippy.toml`, `Cargo.toml` or set via `#[clippy::msrv]`
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Msrv {
|
pub struct Msrv {
|
||||||
stack: Vec<RustcVersion>,
|
stack: SmallVec<[RustcVersion; 2]>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for Msrv {
|
impl fmt::Display for Msrv {
|
||||||
@ -87,14 +88,14 @@ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
|||||||
{
|
{
|
||||||
let v = String::deserialize(deserializer)?;
|
let v = String::deserialize(deserializer)?;
|
||||||
parse_version(Symbol::intern(&v))
|
parse_version(Symbol::intern(&v))
|
||||||
.map(|v| Msrv { stack: vec![v] })
|
.map(|v| Msrv { stack: smallvec![v] })
|
||||||
.ok_or_else(|| serde::de::Error::custom("not a valid Rust version"))
|
.ok_or_else(|| serde::de::Error::custom("not a valid Rust version"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Msrv {
|
impl Msrv {
|
||||||
pub fn empty() -> Msrv {
|
pub fn empty() -> Msrv {
|
||||||
Msrv { stack: Vec::new() }
|
Msrv { stack: SmallVec::new() }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn read_cargo(&mut self, sess: &Session) {
|
pub fn read_cargo(&mut self, sess: &Session) {
|
||||||
@ -103,7 +104,7 @@ pub fn read_cargo(&mut self, sess: &Session) {
|
|||||||
.and_then(|v| parse_version(Symbol::intern(&v)));
|
.and_then(|v| parse_version(Symbol::intern(&v)));
|
||||||
|
|
||||||
match (self.current(), cargo_msrv) {
|
match (self.current(), cargo_msrv) {
|
||||||
(None, Some(cargo_msrv)) => self.stack = vec![cargo_msrv],
|
(None, Some(cargo_msrv)) => self.stack = smallvec![cargo_msrv],
|
||||||
(Some(clippy_msrv), Some(cargo_msrv)) => {
|
(Some(clippy_msrv), Some(cargo_msrv)) => {
|
||||||
if clippy_msrv != cargo_msrv {
|
if clippy_msrv != cargo_msrv {
|
||||||
sess.dcx().warn(format!(
|
sess.dcx().warn(format!(
|
||||||
|
Loading…
Reference in New Issue
Block a user