diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2021-06-04 10:43:25 +0200 |
|---|---|---|
| committer | Mara Bos <m-ou.se@m-ou.se> | 2021-06-04 10:47:03 +0200 |
| commit | 25639101ddd18f5bcc47e924015d9a3143840397 (patch) | |
| tree | 6d9665fbc9263326d24e22248b73931c7f8021f8 | |
| parent | 5f746a1c2ae130ef84704c941b962075af6693ac (diff) | |
| download | rust-25639101ddd18f5bcc47e924015d9a3143840397.tar.gz rust-25639101ddd18f5bcc47e924015d9a3143840397.zip | |
Don't treat `cfg!()` as a constant.
| -rw-r--r-- | clippy_utils/src/consts.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clippy_utils/src/consts.rs b/clippy_utils/src/consts.rs index 0d7fdeeb920..15c27d1a996 100644 --- a/clippy_utils/src/consts.rs +++ b/clippy_utils/src/consts.rs @@ -1,6 +1,6 @@ #![allow(clippy::float_cmp)] -use crate::{clip, sext, unsext}; +use crate::{clip, is_direct_expn_of, sext, unsext}; use if_chain::if_chain; use rustc_ast::ast::{self, LitFloatType, LitKind}; use rustc_data_structures::sync::Lrc; @@ -230,7 +230,13 @@ impl<'a, 'tcx> ConstEvalLateContext<'a, 'tcx> { match e.kind { ExprKind::Path(ref qpath) => self.fetch_path(qpath, e.hir_id, self.typeck_results.expr_ty(e)), ExprKind::Block(block, _) => self.block(block), - ExprKind::Lit(ref lit) => Some(lit_to_constant(&lit.node, self.typeck_results.expr_ty_opt(e))), + ExprKind::Lit(ref lit) => { + if is_direct_expn_of(e.span, "cfg").is_some() { + None + } else { + Some(lit_to_constant(&lit.node, self.typeck_results.expr_ty_opt(e))) + } + }, ExprKind::Array(vec) => self.multi(vec).map(Constant::Vec), ExprKind::Tup(tup) => self.multi(tup).map(Constant::Tuple), ExprKind::Repeat(value, _) => { |
