Skip to content

Commit

Permalink
Unrolled build for rust-lang#120132
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#120132 - oli-obk:helpful_tidy, r=Mark-Simulacrum

Teach tidy about line/col information for malformed features

This makes it significantly easier to find the specific feature, since you can now just click it in the command line of your IDE
  • Loading branch information
rust-timer authored Jan 20, 2024
2 parents 5378c1c + 50b4ca6 commit 9d7b279
Showing 1 changed file with 26 additions and 6 deletions.
32 changes: 26 additions & 6 deletions src/tools/tidy/src/features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use std::ffi::OsStr;
use std::fmt;
use std::fs;
use std::num::NonZeroU32;
use std::path::Path;
use std::path::{Path, PathBuf};

use regex::Regex;

Expand Down Expand Up @@ -52,6 +52,8 @@ pub struct Feature {
pub since: Option<Version>,
pub has_gate_test: bool,
pub tracking_issue: Option<NonZeroU32>,
pub file: PathBuf,
pub line: usize,
}
impl Feature {
fn tracking_issue_display(&self) -> impl fmt::Display {
Expand Down Expand Up @@ -184,23 +186,25 @@ pub fn check(
.chain(lib_features.iter().map(|feat| (feat, "lib")));
for ((feature_name, feature), kind) in all_features_iter {
let since = if let Some(since) = feature.since { since } else { continue };
let file = feature.file.display();
let line = feature.line;
if since > version && since != Version::CurrentPlaceholder {
tidy_error!(
bad,
"The stabilization version {since} of {kind} feature `{feature_name}` is newer than the current {version}"
"{file}:{line}: The stabilization version {since} of {kind} feature `{feature_name}` is newer than the current {version}"
);
}
if channel == "nightly" && since == version {
tidy_error!(
bad,
"The stabilization version {since} of {kind} feature `{feature_name}` is written out but should be {}",
"{file}:{line}: The stabilization version {since} of {kind} feature `{feature_name}` is written out but should be {}",
version::VERSION_PLACEHOLDER
);
}
if channel != "nightly" && since == Version::CurrentPlaceholder {
tidy_error!(
bad,
"The placeholder use of {kind} feature `{feature_name}` is not allowed on the {channel} channel",
"{file}:{line}: The placeholder use of {kind} feature `{feature_name}` is not allowed on the {channel} channel",
);
}
}
Expand Down Expand Up @@ -433,7 +437,14 @@ fn collect_lang_features_in(features: &mut Features, base: &Path, file: &str, ba
);
}
Entry::Vacant(e) => {
e.insert(Feature { level, since, has_gate_test: false, tracking_issue });
e.insert(Feature {
level,
since,
has_gate_test: false,
tracking_issue,
file: path.to_path_buf(),
line: line_number,
});
}
}
}
Expand Down Expand Up @@ -559,6 +570,8 @@ fn map_lib_features(
since: None,
has_gate_test: false,
tracking_issue: find_attr_val(line, "issue").and_then(handle_issue_none),
file: file.to_path_buf(),
line: i + 1,
};
mf(Ok((feature_name, feature)), file, i + 1);
continue;
Expand Down Expand Up @@ -588,7 +601,14 @@ fn map_lib_features(
};
let tracking_issue = find_attr_val(line, "issue").and_then(handle_issue_none);

let feature = Feature { level, since, has_gate_test: false, tracking_issue };
let feature = Feature {
level,
since,
has_gate_test: false,
tracking_issue,
file: file.to_path_buf(),
line: i + 1,
};
if line.contains(']') {
mf(Ok((feature_name, feature)), file, i + 1);
} else {
Expand Down

0 comments on commit 9d7b279

Please sign in to comment.