Revert "Create const block DefIds in typeck instead of ast lowering"
This reverts commit ddc5f9b6c1
.
This commit is contained in:
parent
16fcbd21e5
commit
abd011638d
@ -6,7 +6,7 @@
|
|||||||
use rustc_ast::ast::{self, LitFloatType, LitKind};
|
use rustc_ast::ast::{self, LitFloatType, LitKind};
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
use rustc_hir::def::{DefKind, Res};
|
use rustc_hir::def::{DefKind, Res};
|
||||||
use rustc_hir::{BinOp, BinOpKind, Block, Expr, ExprKind, HirId, Item, ItemKind, Node, QPath, UnOp};
|
use rustc_hir::{BinOp, BinOpKind, Block, ConstBlock, Expr, ExprKind, HirId, Item, ItemKind, Node, QPath, UnOp};
|
||||||
use rustc_lexer::tokenize;
|
use rustc_lexer::tokenize;
|
||||||
use rustc_lint::LateContext;
|
use rustc_lint::LateContext;
|
||||||
use rustc_middle::mir::interpret::{alloc_range, Scalar};
|
use rustc_middle::mir::interpret::{alloc_range, Scalar};
|
||||||
@ -412,7 +412,7 @@ pub fn new(lcx: &'a LateContext<'tcx>, typeck_results: &'a ty::TypeckResults<'tc
|
|||||||
/// Simple constant folding: Insert an expression, get a constant or none.
|
/// Simple constant folding: Insert an expression, get a constant or none.
|
||||||
pub fn expr(&mut self, e: &Expr<'_>) -> Option<Constant<'tcx>> {
|
pub fn expr(&mut self, e: &Expr<'_>) -> Option<Constant<'tcx>> {
|
||||||
match e.kind {
|
match e.kind {
|
||||||
ExprKind::ConstBlock(e) | ExprKind::DropTemps(e) => self.expr(e),
|
ExprKind::ConstBlock(ConstBlock { body, .. }) => self.expr(self.lcx.tcx.hir().body(body).value), ExprKind::DropTemps(e) => self.expr(e),
|
||||||
ExprKind::Path(ref qpath) => {
|
ExprKind::Path(ref qpath) => {
|
||||||
self.fetch_path_and_apply(qpath, e.hir_id, self.typeck_results.expr_ty(e), |this, result| {
|
self.fetch_path_and_apply(qpath, e.hir_id, self.typeck_results.expr_ty(e), |this, result| {
|
||||||
let result = mir_to_const(this.lcx, result)?;
|
let result = mir_to_const(this.lcx, result)?;
|
||||||
@ -490,7 +490,7 @@ pub fn expr(&mut self, e: &Expr<'_>) -> Option<Constant<'tcx>> {
|
|||||||
/// leaves the local crate.
|
/// leaves the local crate.
|
||||||
pub fn expr_is_empty(&mut self, e: &Expr<'_>) -> Option<bool> {
|
pub fn expr_is_empty(&mut self, e: &Expr<'_>) -> Option<bool> {
|
||||||
match e.kind {
|
match e.kind {
|
||||||
ExprKind::ConstBlock(e) | ExprKind::DropTemps(e) => self.expr_is_empty(e),
|
ExprKind::ConstBlock(ConstBlock { body, .. }) => self.expr_is_empty(self.lcx.tcx.hir().body(body).value), ExprKind::DropTemps(e) => self.expr_is_empty(e),
|
||||||
ExprKind::Path(ref qpath) => {
|
ExprKind::Path(ref qpath) => {
|
||||||
if !self
|
if !self
|
||||||
.typeck_results
|
.typeck_results
|
||||||
|
@ -295,7 +295,7 @@ pub fn eq_expr(&mut self, left: &Expr<'_>, right: &Expr<'_>) -> bool {
|
|||||||
self.eq_expr(lx, rx) && self.eq_ty(lt, rt)
|
self.eq_expr(lx, rx) && self.eq_ty(lt, rt)
|
||||||
},
|
},
|
||||||
(&ExprKind::Closure(_l), &ExprKind::Closure(_r)) => false,
|
(&ExprKind::Closure(_l), &ExprKind::Closure(_r)) => false,
|
||||||
(&ExprKind::ConstBlock(lb), &ExprKind::ConstBlock(rb)) => self.eq_expr(lb, rb),
|
(&ExprKind::ConstBlock(lb), &ExprKind::ConstBlock(rb)) => self.eq_body(lb.body, rb.body),
|
||||||
(&ExprKind::Continue(li), &ExprKind::Continue(ri)) => {
|
(&ExprKind::Continue(li), &ExprKind::Continue(ri)) => {
|
||||||
both(&li.label, &ri.label, |l, r| l.ident.name == r.ident.name)
|
both(&li.label, &ri.label, |l, r| l.ident.name == r.ident.name)
|
||||||
},
|
},
|
||||||
@ -769,8 +769,8 @@ pub fn hash_expr(&mut self, e: &Expr<'_>) {
|
|||||||
// closures inherit TypeckResults
|
// closures inherit TypeckResults
|
||||||
self.hash_expr(self.cx.tcx.hir().body(body).value);
|
self.hash_expr(self.cx.tcx.hir().body(body).value);
|
||||||
},
|
},
|
||||||
ExprKind::ConstBlock(l_id) => {
|
ExprKind::ConstBlock(ref l_id) => {
|
||||||
self.hash_expr(l_id);
|
self.hash_body(l_id.body);
|
||||||
},
|
},
|
||||||
ExprKind::DropTemps(e) | ExprKind::Yield(e, _) => {
|
ExprKind::DropTemps(e) | ExprKind::Yield(e, _) => {
|
||||||
self.hash_expr(e);
|
self.hash_expr(e);
|
||||||
|
@ -1,35 +1,11 @@
|
|||||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
|
||||||
--> tests/ui/arithmetic_side_effects.rs:188:36
|
|
||||||
|
|
|
||||||
LL | let _ = const { let mut n = 1; n += 1; n };
|
|
||||||
| ^^^^^^
|
|
||||||
|
|
|
||||||
= note: `-D clippy::arithmetic-side-effects` implied by `-D warnings`
|
|
||||||
= help: to override `-D warnings` add `#[allow(clippy::arithmetic_side_effects)]`
|
|
||||||
|
|
||||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
|
||||||
--> tests/ui/arithmetic_side_effects.rs:191:40
|
|
||||||
|
|
|
||||||
LL | let _ = const { let mut n = 1; n = n + 1; n };
|
|
||||||
| ^^^^^
|
|
||||||
|
|
||||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
|
||||||
--> tests/ui/arithmetic_side_effects.rs:194:40
|
|
||||||
|
|
|
||||||
LL | let _ = const { let mut n = 1; n = 1 + n; n };
|
|
||||||
| ^^^^^
|
|
||||||
|
|
||||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
|
||||||
--> tests/ui/arithmetic_side_effects.rs:200:59
|
|
||||||
|
|
|
||||||
LL | let _ = const { let mut n = 1; n = -1; n = -(-1); n = -n; n };
|
|
||||||
| ^^
|
|
||||||
|
|
||||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||||
--> tests/ui/arithmetic_side_effects.rs:304:5
|
--> tests/ui/arithmetic_side_effects.rs:304:5
|
||||||
|
|
|
|
||||||
LL | _n += 1;
|
LL | _n += 1;
|
||||||
| ^^^^^^^
|
| ^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `-D clippy::arithmetic-side-effects` implied by `-D warnings`
|
||||||
|
= help: to override `-D warnings` add `#[allow(clippy::arithmetic_side_effects)]`
|
||||||
|
|
||||||
error: arithmetic operation that can potentially result in unexpected side-effects
|
error: arithmetic operation that can potentially result in unexpected side-effects
|
||||||
--> tests/ui/arithmetic_side_effects.rs:305:5
|
--> tests/ui/arithmetic_side_effects.rs:305:5
|
||||||
@ -751,5 +727,5 @@ error: arithmetic operation that can potentially result in unexpected side-effec
|
|||||||
LL | one.sub_assign(1);
|
LL | one.sub_assign(1);
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 125 previous errors
|
error: aborting due to 121 previous errors
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user