Encode CommandLine in the index only.
This commit is contained in:
parent
66fee063b6
commit
5a731ffdae
@ -121,7 +121,7 @@ impl<'s> LintLevelsBuilder<'s> {
|
||||
}
|
||||
}
|
||||
|
||||
self.cur = self.sets.list.push(LintSet::CommandLine { specs });
|
||||
self.cur = self.sets.list.push(LintSet { specs, parent: COMMAND_LINE });
|
||||
}
|
||||
|
||||
/// Attempts to insert the `id` to `level_src` map entry. If unsuccessful
|
||||
@ -524,7 +524,7 @@ impl<'s> LintLevelsBuilder<'s> {
|
||||
|
||||
let prev = self.cur;
|
||||
if !specs.is_empty() {
|
||||
self.cur = self.sets.list.push(LintSet::Node { specs, parent: prev });
|
||||
self.cur = self.sets.list.push(LintSet { specs, parent: prev });
|
||||
}
|
||||
|
||||
BuilderPush { prev, changed: prev != self.cur }
|
||||
|
@ -66,17 +66,12 @@ rustc_index::newtype_index! {
|
||||
}
|
||||
|
||||
#[derive(Debug, HashStable)]
|
||||
pub enum LintSet {
|
||||
CommandLine {
|
||||
// -A,-W,-D flags, a `Symbol` for the flag itself and `Level` for which
|
||||
// flag.
|
||||
specs: FxHashMap<LintId, LevelAndSource>,
|
||||
},
|
||||
pub struct LintSet {
|
||||
// -A,-W,-D flags, a `Symbol` for the flag itself and `Level` for which
|
||||
// flag.
|
||||
pub specs: FxHashMap<LintId, LevelAndSource>,
|
||||
|
||||
Node {
|
||||
specs: FxHashMap<LintId, LevelAndSource>,
|
||||
parent: LintStackIndex,
|
||||
},
|
||||
pub parent: LintStackIndex,
|
||||
}
|
||||
|
||||
impl LintLevelSets {
|
||||
@ -139,20 +134,14 @@ impl LintLevelSets {
|
||||
}
|
||||
}
|
||||
loop {
|
||||
match self.list[idx] {
|
||||
LintSet::CommandLine { ref specs } => {
|
||||
if let Some(&(level, src)) = specs.get(&id) {
|
||||
return (Some(level), src);
|
||||
}
|
||||
return (None, LintLevelSource::Default);
|
||||
}
|
||||
LintSet::Node { ref specs, parent } => {
|
||||
if let Some(&(level, src)) = specs.get(&id) {
|
||||
return (Some(level), src);
|
||||
}
|
||||
idx = parent;
|
||||
}
|
||||
let LintSet { ref specs, parent } = self.list[idx];
|
||||
if let Some(&(level, src)) = specs.get(&id) {
|
||||
return (Some(level), src);
|
||||
}
|
||||
if idx == COMMAND_LINE {
|
||||
return (None, LintLevelSource::Default);
|
||||
}
|
||||
idx = parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user