mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 00:03:43 +00:00
treat macros as terminals to prevent cfg!
from giving platform specific hints
This commit is contained in:
parent
0a78a795ab
commit
288ea79963
@ -54,23 +54,26 @@ impl<'a, 'tcx, 'v> Hir2Qmm<'a, 'tcx, 'v> {
|
||||
}
|
||||
|
||||
fn run(&mut self, e: &'v Expr) -> Result<Bool, String> {
|
||||
match e.node {
|
||||
ExprUnary(UnNot, ref inner) => return Ok(Bool::Not(box self.run(inner)?)),
|
||||
ExprBinary(binop, ref lhs, ref rhs) => {
|
||||
match binop.node {
|
||||
BiOr => return Ok(Bool::Or(self.extract(BiOr, &[lhs, rhs], Vec::new())?)),
|
||||
BiAnd => return Ok(Bool::And(self.extract(BiAnd, &[lhs, rhs], Vec::new())?)),
|
||||
_ => {},
|
||||
}
|
||||
},
|
||||
ExprLit(ref lit) => {
|
||||
match lit.node {
|
||||
LitKind::Bool(true) => return Ok(Bool::True),
|
||||
LitKind::Bool(false) => return Ok(Bool::False),
|
||||
_ => {},
|
||||
}
|
||||
},
|
||||
_ => {},
|
||||
// prevent folding of `cfg!` macros and the like
|
||||
if !in_macro(self.cx, e.span) {
|
||||
match e.node {
|
||||
ExprUnary(UnNot, ref inner) => return Ok(Bool::Not(box self.run(inner)?)),
|
||||
ExprBinary(binop, ref lhs, ref rhs) => {
|
||||
match binop.node {
|
||||
BiOr => return Ok(Bool::Or(self.extract(BiOr, &[lhs, rhs], Vec::new())?)),
|
||||
BiAnd => return Ok(Bool::And(self.extract(BiAnd, &[lhs, rhs], Vec::new())?)),
|
||||
_ => {},
|
||||
}
|
||||
},
|
||||
ExprLit(ref lit) => {
|
||||
match lit.node {
|
||||
LitKind::Bool(true) => return Ok(Bool::True),
|
||||
LitKind::Bool(false) => return Ok(Bool::False),
|
||||
_ => {},
|
||||
}
|
||||
},
|
||||
_ => {},
|
||||
}
|
||||
}
|
||||
if let Some((n, _)) = self.terminals
|
||||
.iter()
|
||||
|
@ -29,4 +29,7 @@ fn main() {
|
||||
let _ = false || a; //~ ERROR this boolean expression can be simplified
|
||||
//|~ HELP for further information visit
|
||||
//|~ SUGGESTION let _ = a;
|
||||
|
||||
// don't lint on cfgs
|
||||
let _ = cfg!(you_shall_not_not_pass) && a;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user